如何从列的字符串值引用字符串的列表在postgresql?



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

最新更新