加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle把一列的值合并为一个值并用逗号分隔

发布时间:2020-12-12 13:59:36 所属栏目:百科 来源:网络整理
导读:Oracle把一列的值合并为一个值,并用逗号分隔。 实例中将把部门表(DEPT表)与员工表(EMP表)关联,查询每个部门下的所有员工姓名,员工姓名之间以逗号分隔(如图一)。 图一:执行结果 1、WMSYS.WM_CONCAT(列名)函数 介绍:其函数在Oracle 10g推出,在10g

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 部门编号,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 部门编号,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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读