考虑:
从测试中选择my_col;
出:
my_col
x
y
z
如何将 PostgreSQL 中三行的输出更改为三个带引号的字符串列表的输出,使其如下所示?
出:
'x','y','z'
如果我跑步
string_agg(my_val, ''',''')
,我会得到
出:
x','y','z
如果我在此输出之上运行 quote_literal() ,我会得到:
出:
'x'',''y'',''z'
我需要这个带引号的字符串列表作为函数(存储过程)参数的输入。该函数的工作原理是手动传递
'x','y','z'
作为参数。因此,这只是缺少前导和尾随引号。
旁注,不是针对问题:然后它将作为
variadic _v text[]
读入函数,以便我可以使用 where t.v = any(_v)
检查函数中的值。
你似乎想要:
select string_agg('''' || my_val || '''', ',') my_val_agg
from test
也就是说:在聚合它们之前连接值周围的引号 - 然后剩下的就是在中间添加 ,
分隔符。
''''
可以生成单引号。我们还可以在 Postgres 中使用 POSIX 语法:
select string_agg(E'\'' || my_val || E'\'', ',') my_val_agg
from test