select my_col from test;
:
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