Listagg函数详解
什么是Listagg函数?
Listagg
函数是Oracle数据库中用于字符串拼接的函数。它可以将多行数据中的某个字段的值按照指定的分隔符拼接为一个字符串,并将结果返回。
Listagg函数的语法
Listagg
函数的语法如下:
1 | LISTAGG(expression, delimiter) WITHIN GROUP (ORDER BY column) |
其中:
expression
:用于拼接的列或表达式。delimiter
:指定的分隔符,用于将拼接的字符串分隔开。column
:用于排序的列,可选参数。
Listagg函数的示例
假设我们有一个名为employees
的表,包含以下数据:
ID | NAME | DEPARTMENT |
---|---|---|
1 | Alice | IT |
2 | Bob | HR |
3 | Charlie | IT |
4 | David | Finance |
5 | Eve | HR |
现在,我们将演示一些常见的Listagg
函数的用法。
示例1:无分组拼接
假设我们想将employees
表中的所有员工名字按照逗号分隔拼接成一个字符串。
1 | SELECT LISTAGG(NAME, ',') WITHIN GROUP (ORDER BY ID) AS NAMES |
输出结果:
1 | NAMES |
示例2:分组拼接
假设我们想将employees
表中每个部门的员工名字按照逗号分隔拼接成一个字符串。
1 | SELECT DEPARTMENT, LISTAGG(NAME, ',') WITHIN GROUP (ORDER BY ID) AS NAMES |
输出结果:
1 | DEPARTMENT | NAMES |
示例3:指定排序顺序
假设我们想将employees
表中所有员工名字按照部门和ID进行排序,并按照逗号分隔拼接成一个字符串。
1 | SELECT LISTAGG(NAME, ',') WITHIN GROUP (ORDER BY DEPARTMENT, ID) AS NAMES |
输出结果:
1 | NAMES |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 宸汐缘!
评论