Oracle:将行组合成逗号分隔的列表
数据操作通常需要将多行聚合到一个以逗号分隔的字符串中。 Oracle 提供了多种方法来实现此目的:
方法 1:LISTAGG(Oracle 11.2 及更高版本)
LISTAGG
函数(从 Oracle 11.2 开始提供)使用指定的分隔符有效地连接行。 其语法为:
<code class="language-sql">LISTAGG(expression, delimiter [, separator]) WITHIN GROUP (ORDER BY order_expression)</code>
示例:从 countries
表生成以逗号分隔的国家/地区名称列表:
<code class="language-sql">SELECT LISTAGG(country_name, ', ') WITHIN GROUP (ORDER BY country_name) FROM countries;</code>
方法2:WM_CONCAT(11.2之前的Oracle版本)
对于较旧的 Oracle 数据库(11.2 之前),WM_CONCAT
函数提供类似的功能:
<code class="language-sql">SELECT WM_CONCAT(country_name) FROM countries;</code>
方法三:自定义PL/SQL函数
如果 LISTAGG
和 WM_CONCAT
都不够,自定义 PL/SQL 函数可以提供灵活的解决方案。 这允许定制连接逻辑,如使用循环和字符串连接提供的示例所示。
以上是如何在 Oracle 中将行聚合到逗号分隔的列表中?的详细内容。更多信息请关注PHP中文网其他相关文章!