使用Oracle数据库自带的函数:wmsys.wm_concat可以解决此问题。
example:select wmsys.wm_concat(t.username) from student t
SQL> select version from v$instance;
VERSION
-----------------
10.2.0.1.0
SQL>
SQL> create table IDTABLE
2 (
3 id number,
4 val varchar2(20)
5 )
6 ;
Table created
SQL>
SQL> insert into IDTABLE (ID, VAL)
2 values (10, 'abc');
1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (10, 'abc');
1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (10, 'def');
1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (10, 'def');
1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (20, 'ghi');
1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (20, 'jkl');
1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (20, 'mno');
1 row inserted
SQL> insert into IDTABLE (ID, VAL)
2 values (20, 'mno');
1 row inserted
SQL> select id,val from idtable;
ID VAL
---------- --------------------
10 abc
10 abc
10 def
10 def
20 ghi
20 jkl
20 mno
20 mno
8 rows selected
SQL> commit;
Commit complete
SQL>
SQL> SELECT ID, WMSYS.WM_CONCAT(VAL) AS ENAMES
2 FROM IDTABLE
3 GROUP BY ID;
ID ENAMES
---------- --------------------------------------------------------------------------------
10 abc,abc,def,def
20 ghi,jkl,mno,mno
SQL>
SQL> SELECT ID, WMSYS.WM_CONCAT(DISTINCT VAL) AS ENAMES
2 FROM IDTABLE
3 GROUP BY ID
4 ORDER BY ID;
ID ENAMES
---------- --------------------------------------------------------------------------------
10 abc,def
20 ghi,jkl,mno
SQL>
SQL> SELECT ID, VAL, WMSYS.WM_CONCAT(VAL) OVER(PARTITION BY ID) AS ENAMES
2 FROM IDTABLE
3 ORDER BY ID;
ID VAL ENAMES
---------- -------------------- --------------------------------------------------------------------------------
10 abc abc,abc,def,def
10 abc abc,abc,def,def
10 def abc,abc,def,def
10 def abc,abc,def,def
20 ghi ghi,jkl,mno,mno
20 jkl ghi,jkl,mno,mno
20 mno ghi,jkl,mno,mno
20 mno ghi,jkl,mno,mno
8 rows selected
SQL>
SQL> SELECT ID, VAL, WMSYS.WM_CONCAT(VAL) OVER(ORDER BY ID, VAL) AS ENAMES
2 FROM IDTABLE
3 ORDER BY ID;
ID VAL ENAMES
---------- -------------------- --------------------------------------------------------------------------------
10 abc abc,abc
10 abc abc,abc
10 def abc,abc,def,def
10 def abc,abc,def,def
20 ghi abc,abc,def,def,ghi
20 jkl abc,abc,def,def,ghi,jkl
20 mno abc,abc,def,def,ghi,jkl,mno,mno
20 mno abc,abc,def,def,ghi,jkl,mno,mno
8 rows selected
分享到:
相关推荐
以上就是Oracle列合并的几种常见方法,根据实际需求和数据库版本,可以选择最合适的方案。在使用这些方法时,要特别注意数据类型、字符集以及可能存在的性能问题,如`WM_CONCAT`在大数据量时可能会遇到内存溢出的...
随着SQL Server版本的更新,引入了一些新的聚合和XML函数,使得合并多行记录变得更简单。 - 方法一使用`OUTER APPLY`结合子查询,首先获取所有不同的`id`,然后通过`OUTER APPLY`与主查询关联,利用`FOR XML AUTO`...
在SQL中,分组字符合并通常用于将具有相同标识符的多行数据的某个字段值合并成一个单一的字符串,这种操作在数据报告或者数据整理时非常常见。本主题主要探讨了三种不同的方法来实现这一目标,分别适用于SQL Server ...
- 拼接(`+`):将多个字符串合并成一个。 - 重复(`*`):将字符串重复指定次数。 - 索引(`[]`):获取字符串中的某个字符。 - 切片(`[start:end]`):获取字符串的一部分。 Python提供了丰富的字符串方法,如:...
`GROUP_CONCAT`用于将多行合并为一个字符串,`SUBSTRING_INDEX`则用于分割字符串并提取特定部分。以下是基本步骤: 1. 创建一个包含所有可能列名的查询,这可以通过`UNION ALL`多个子查询来实现。 2. 使用`GROUP_...
2.14 合并拼接字符串:如何高效地将多个字符串合并成一个。 2.15 字符串中插入变量:在字符串中插入变量或表达式的结果。 2.16 以指定列宽格式化字符串:使用字符串格式化功能按照特定的列宽输出文本。 2.17 在字符...
- **WMSYS.WM_CONCAT**:将多个字符串合并成一个。 - **LISTAGG**:将多个字符串值组合成一个字符串,可以指定分隔符。 - **COLLECT**:收集多个值到一个集合中。 - **CONNECT BY**:利用层次查询实现字符串连接。 -...
实例156 限制多行文本域输入的字符个数 187 实例157 设置文本框的只读属性 188 实例158 自动计算金额 189 实例159 为文本框设置默认值 190 实例160 设置文本框的样式 191 实例161 文本域的滚动条 192 3.3 下拉列表的...
实例156 限制多行文本域输入的字符个数 187 实例157 设置文本框的只读属性 188 实例158 自动计算金额 189 实例159 为文本框设置默认值 190 实例160 设置文本框的样式 191 实例161 文本域的滚动条 192 3.3 下拉列表的...
- **知识点**:介绍了如何将多个字典或映射合并成一个,这对于处理来自不同来源的数据非常有用。 #### 四、字符串和文本 - **2.1 使用多个界定符分割字符串** - **知识点**:讲解了如何使用多个界定符来分割字符...
- **concatenate**:连接,将两个或多个字符串合并成一个。 - **buffer**:缓冲区,临时存储数据的空间。 - **final**:最终的,表示不可更改的属性或方法。 #### 第十七章:其他术语 - **mini**:迷你,小型化的...
Oracle 数据库中的SQL是当今市场上功能最强大的SQL实现之一,而本书全面展示了这一工具的威力。如何才能让更多人有效地学习和掌握SQL呢?Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习...
这种重构可以将多个相关的变量合并成一个,以减少代码冗余。 - **Alt+Shift+V**:移动函数和变量。虽然不常用,但在某些情况下可能非常有用。 - **Alt+Shift+Z**:重构的后悔药(Undo)。如果对重构结果不满意,可以...
合并对象,将相邻的相似对象合并成一个整体,如合并多条直线成多段线。 #### LAYER (LA) 管理图层和图层特性,控制图形中不同对象的可见性、颜色和线型,便于组织和管理。 #### LEADER (LEAD) 引线标注,创建指向...
- **使用**:切片是Go语言中最常用的数据结构之一。 - **多维切片**:类似于多维数组,但切片更灵活。 **8.3 映射** - **声明**:键值对的集合。 - **初始化**:使用`make`函数初始化。 - **操作**:支持增删改查...
C# 是 .NET 平台的一个重要组成部分,它被设计成一种简单、现代、面向对象的编程语言,用于构建各种类型的应用程序。C# 与 .NET 框架紧密结合,充分利用后者提供的各种服务和技术,例如通用语言运行时(CLR)、类型...
其次,利用反斜杠(\)实现多行字符串拼接是一种比较传统的方法,它的优点在于可以将代码分散到多行,以增强代码的可读性,但同样需要注意,如果在反斜杠和字符串之间有空格或者任何字符,包括换行符,就会导致编译...
- **距离较远的}:** 对于跨越多行的大括号,应在相应的代码块结束处添加注释。 - **非通用变量:** 对于特定上下文中有意义但对其他开发者不明显的变量,需要添加注释。 - **函数文档注释:** 所有公共函数必须有...
- **使用场景**:将独立部件组合成一个整体。 #### 干涉:INTERFERE(INF) - **命令简介**:检测两个对象之间的碰撞。 - **使用场景**:确保零件之间没有冲突。 #### 交集:INTERSECT(IN) - **命令简介**:保留...