用 string_to_array() 将字符串放在引号内

Put strings inside quotes with string_to_array()

提问人:ArthurJ 提问时间:9/30/2021 最后编辑:Erwin BrandstetterArthurJ 更新时间:9/30/2021 访问量:668

问:

我正在使用以下查询:

WITH a as (SELECT unnest(string_to_array(animals, ',')) as "pets" FROM all_animals where id = 100)
select * from a

它返回以下数据:

1 Cat
2 Dog
3 Bird

我的问题是,我怎样才能格式化上面的选择,以包含返回数据的单引号,如下所示:string_to_array

1 'Cat'
2 'Dog'
3 'Bird'
sql postgresql 报价 string-agg

评论


答:

0赞 Erwin Brandstetter 9/30/2021 #1

使用 quote_literal() 安全地使用单引号字符串:

WITH a AS (
   SELECT unnest(string_to_array(animals, ',')) AS pets
   FROM   all_animals
   WHERE  id = 100
   )
SELECT quote_literal(pets) AS pets
FROM   a;

或更短,没有 CTE:

SELECT quote_literal(unnest(string_to_array(animals, ','))) AS pets
FROM   all_animals
WHERE  id = 100;

db<>fiddle 在这里