Postgresql使用array_to_string将字符串放在引号内

时间:2018-04-25 10:42:51

标签: arrays postgresql string-aggregation

在select中我使用了array_to_string,如下所示(例子)

array_to_string(array_agg(tag_name),';') tag_names

我得到了结果字符串"tag1;tag2;tag3;...",但我希望将结果字符串设为"'tag1';'tag2';'tag3';..."

我怎样才能在Postgres中做到这一点?

3 个答案:

答案 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)

或者您可以在这样的一个请求中使用unnestformatarray_aggarray_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;