在select中我使用了array_to_string,如下所示(例子)
array_to_string(array_agg(tag_name),';') tag_names
我得到了结果字符串"tag1;tag2;tag3;..."
,但我希望将结果字符串设为"'tag1';'tag2';'tag3';..."
。
我怎样才能在Postgres中做到这一点?
答案 0 :(得分:3)
使用string_agg()
和format()
功能,例如
ml_train_validation_split
答案 1 :(得分:0)
或使用
array_to_string(array_agg(''''||tag_name||''''),';') tag_names
甚至更简单(感谢评论:))
string_agg(''''||tag_name||''''),';') tag_names
注意:
在处理多参数聚合函数时,请注意 ORDER BY子句在所有聚合参数之后。例如, 写下这个:
SELECT string_agg(a,',' ORDER BY a)FROM table;
不是这个:
SELECT string_agg(ORDER BY a,',')FROM表; - 不正确
请参阅https://www.postgresql.org/docs/current/static/sql-expressions.html#SYNTAX-AGGREGATES
答案 2 :(得分:0)
或者您可以在这样的一个请求中使用unnest
,format
,array_agg
和array_to_string
:
select array_to_string(t.tag, ',')
from (
select array_agg(format('%L', t.tag)) as tag
from (
select unnest(tag_name) as tag
) t
) t;