如何根据 PostgreSQL 中列的字符串值创建带引号的字符串列表?

问题描述 投票:0回答:1

考虑:

从测试中选择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)
检查函数中的值。

sql string postgresql aggregate-functions
1个回答
2
投票

你似乎想要:

select string_agg('''' || my_val || '''', ',') my_val_agg
from test

也就是说:在聚合它们之前连接值周围的引号 - 然后剩下的就是在中间添加 ,

 分隔符。

''''

 可以生成单引号。我们还可以在 Postgres 中使用 POSIX 语法:

select string_agg(E'\'' || my_val || E'\'', ',') my_val_agg from test
    
© www.soinside.com 2019 - 2024. All rights reserved.