sql - PL/SQL 等效于 T-SQL 面向集合的变量串联

标签 sql oracle plsql string-aggregation

在 Microsoft SQL Server (T-SQL) 中,有一种简洁、优雅且高性能的面向集合的方法来使用表中多行的值串联填充 VARCHAR 变量,即:

DECLARE @vals NVARCHAR(MAX)
SELECT @vals = ISNULL(@vals + ',', '')
+ <some_varchar_column>
FROM <some_table>

使用 some_table 的所有行中 some_column 中所有值的逗号分隔字符串填充 @vals(例如,“value1,value2 ,value3, ...").

如何以同样优雅的方式(无需编写循环/游标)在 Oracle PL/SQL 中执行类似的操作?

最佳答案

这个?

SQL> select listagg(dname, ',') within group (order by dname) result
  2  from dept;

RESULT
-------------------------------------------------------------------------
ACCOUNTING,OPERATIONS,RESEARCH,SALES

SQL>

关于sql - PL/SQL 等效于 T-SQL 面向集合的变量串联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63712357/

相关文章:

oracle - 如何找到导致ora-06575的错误?

mysql - SQL 脚本中的变量数据库名称

java - 如何使用 MyBatis 调用返回 BOOLEAN 的函数?

mysql - 为什么使用子查询时结果会重复?

sql - 如何从连接表中选择数据作为表类型?

oracle - 如何测试程序或 oracle 函数?

sql - oracle sql中where条件的动态数字

php - 如何使用 Group By 组合这两个 MySQL 查询

sql - PostgreSQL GROUP BY 与 MySQL 不同?

SQL 存储过程变量空检查