oracle将一列的合并用逗号隔开,Oracle把一列的值合并为一个值并用逗号分隔
Oracle把一列的值合并为一个值,并用逗号分隔。实例中将把部门表(DEPT表)与员工表(EMP表)关联,查询每个部门下的所有员工姓名,员工姓名之间以逗号分隔(如图一)。 图一:执行结果1、WMSYS.WM_CONCAT(列名)函数介绍:其函数在Oracle 10g推出,在10g版本中,返回字符串类型,在11g版本中返回clob类型。括号里面的参数是列,而且可以是多个列的集合,也就是说在括号里面可
Oracle把一列的值合并为一个值,并用逗号分隔。
实例中将把部门表(DEPT表)与员工表(EMP表)关联,查询每个部门下的所有员工姓名,员工姓名之间以逗号分隔(如图一)。

图一:执行结果
1、WMSYS.WM_CONCAT(列名)函数
介绍:其函数在Oracle 10g推出,在10g版本中,返回字符串类型,在11g版本中返回clob类型。括号里面的参数是列,而且可以是多个列的集合,也就是说在括号里面可以自由地用‘||’合并字符串。
SELECT D.DEPTNO AS 部门编号,D.DNAME AS 部门名称,WMSYS.WM_CONCAT(E.ENAME) AS 员工列表
FROM DEPT D
LEFT JOIN EMP E ON D.DEPTNO = E.DEPTNO
GROUP BY D.DEPTNO,D.DNAME
拼接多列(拼接员工姓名和员工编号)
SELECT D.DEPTNO AS 部门编号,D.DNAME AS 部门名称,WMSYS.WM_CONCAT(E.ENAME||'('||E.EMPNO||')') AS 员工列表
FROM DEPT D
LEFT JOIN EMP E ON D.DEPTNO = E.DEPTNO
GROUP BY D.DEPTNO,D.DNAME
2、LISTAGG(列名,) WITHIN GROUP(ORDER BY 列名)函数
介绍:其函数在Oracle 11g 版本中推出,对分组后的数据按照一定的排序进行字符串连接。
SELECT D.DEPTNO AS 部门编号,D.DNAME AS 部门名称,LISTAGG(E.ENAME,',') WITHIN GROUP(ORDER BY E.ENAME) AS 员工列表
FROM DEPT D
LEFT JOIN EMP E ON D.DEPTNO = E.DEPTNO
GROUP BY D.DEPTNO,D.DNAME
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐



所有评论(0)