Скажімо, у вас є SELECT id from table
запит (справжній випадок - це складний запит), який повертає вам кілька результатів.
Проблема полягає в тому, як отримати всі id
повернення в один рядок, розділені комами?
Скажімо, у вас є SELECT id from table
запит (справжній випадок - це складний запит), який повертає вам кілька результатів.
Проблема полягає в тому, як отримати всі id
повернення в один рядок, розділені комами?
array_agg()
функція зокрема.
Відповіді:
SELECT string_agg(id::text, ',') FROM table
Потрібен PostgreSQL 9.0, але це не проблема.
string_agg(CAST(id as varchar), ',')
замість цього.
string_agg(id::text, ',')
select string_agg(id, ', ' order by id desc) from table
STRING_AGG(DISTINCT customer_name, ',')
Ви можете використовувати функції array () та array_to_string () спільно з вашим запитом. З SELECT array( SELECT id FROM table );
вами ви отримаєте такий результат, як: {1,2,3,4,5,6}
Потім, якщо ви хочете видалити знаки {}, ви можете просто використовувати функцію array_to_string () і використовувати кому як роздільник, отже: SELECT array_to_string( array( SELECT id FROM table ), ',' )
отримає результат типу: 1,2,3,4,5,6
SELECT array_to_string( id, ',' ) AS id FROM table
Ви можете створити CSV з будь-якого запиту SQL за допомогою psql:
$ psql
> \o myfile.csv
> \f ','
> \a
> SELECT col1 AS column1, col2 AS column2 ... FROM ...
Отриманий файл myfile.csv матиме назви результатів набору SQL як заголовки стовпців CSV, а кортежі запитів - як рядки CSV.
ч / т http://pookey.co.uk/wordpress/archives/51-outputting-from-postgres-to-csv
використовуйте функцію array_to_string () & array () для того самого.
select array_to_string(array(select column_name from table_name where id=5), ', ');
string_agg()
?
SELECT array_agg(id, ',') FROM table
{1,2,3,4}
Я використовую Postgres 11, і EntityFramework отримує його як масив цілих чисел.