Oracle DB,使用“,”分隔符连接 1 列中的所有值

Oracle DB, concat all values from 1 column using "," separator

我的 Oracle 数据库 table 有 1 列 UUID

如何将所有 UUID 值连接到一个由 "," 分隔的字符串中,以便输出类似于

"id1","id2","id3","id4"....

您可以使用 listagg():

select listagg(uuid, ',') within group(order by uuid) uuids
from mytable

这将为您提供一个单列记录,其中包含所有 uuid,用逗号分隔。

注意listagg()returns一个varchar,因此输出不能超过4000字节。

另请注意:

  • 逗号是默认分隔符,因此在您的情况下,并非绝对有必要将第二个参数传递给函数

  • 我添加了一个 order by 子句以生成确定性结果:此选项不是强制性的,因此如果列表中项目的顺序对您来说不重要,那么您可以将其分开(在这种情况下,您将以未定义的顺序获得 uuids)

您可以使用 listagg() -- 假设没有太多值。最大字符串大小为 4000 字节。

selest '"' || listagg(uuid, '","') within group (order by uuid) || '"'