LISTAGG 函数将一组行的数据连接成一个字符串,使用指定的连接符分隔元素。用法包括:1. 连接一个列中的所有值;2. 使用连接符分隔值;3. 忽略 NULL 值;4. 按组分区;5. 按顺序连接值。

Oracle 中 LISTAGG 函数的用法
定义:
LISTAGG 函数将一组行的数据连接成一个字符串,并使用指定的连接符分隔各个元素。
语法:
LISTAGG(expression, delimiter [IGNORE NULLS]) OVER (PARTITION BY partition_expression ORDER BY order_expression)
参数:
- expression:要连接的数据列
- delimiter:连接元素之间的字符分隔符(可选)
- IGNORE NULLS:忽略 NULL 值(可选)
- partition_expression:分区的数据列,指定组分元素所处的组(可选)
- order_expression:指定连接元素的顺序(可选)
用法:
LISTAGG 函数通常用于将多个行合并为一个字符串,以方便显示或处理。以下是其典型用法:
1. 连接一个列中的所有值
SELECT LISTAGG(name) FROM table_name;
2. 使用连接符分隔值
SELECT LISTAGG(name, ', ') FROM table_name;
3. 忽略 NULL 值
SELECT LISTAGG(name IGNORE NULLS) FROM table_name;
4. 按组分区
模板采用响应式设计,自动适应手机,电脑及平板显示;满足单一店铺外卖需求。功能:1.菜单分类管理2.菜品管理:菜品增加,删除,修改3.订单管理4.友情链接管理5.数据库备份6.文章模块:如:促销活动,帮助中心7.单页模块:如:企业信息,关于我们更强大的功能在开发中……安装方法:上传到网站根目录,运行http://www.***.com/install 自动
SELECT LISTAGG(name) OVER (PARTITION BY group_id) FROM table_name;
5. 按顺序连接值
SELECT LISTAGG(name) OVER (ORDER BY name) FROM table_name;
示例:
下表显示了员工表中使用 LISTAGG 函数连接员工姓名的示例:
| 员工 ID | 姓名 |
|---|---|
| 1 | John |
| 2 | Jane |
| 3 | David |
使用 LISTAGG 函数连接所有员工姓名:
SELECT LISTAGG(name) FROM employees;
结果:
John, Jane, David
使用逗号作为连接符:
SELECT LISTAGG(name, ', ') FROM employees;
结果:
John, Jane, David
按部门分区并连接每个部门的员工姓名:
SELECT LISTAGG(name) OVER (PARTITION BY department) FROM employees;
结果:
John Jane David









