Поместите строки в кавычки с помощью string_to_array()

#sql #postgresql #quotes #string-agg

Вопрос:

Я использую следующий запрос:

 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'
 

Ответ №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;
 

бд<>скрипка <>здесь