Powiedzmy, że masz plik SELECT id from table
zapytanie (w rzeczywistości jest to zapytanie złożone), które zwraca kilka wyników.
Problem w tym, jak uzyskać wszystkie id
zwroty w jednym wierszu, oddzielone przecinkami?
Powiedzmy, że masz plik SELECT id from table
zapytanie (w rzeczywistości jest to zapytanie złożone), które zwraca kilka wyników.
Problem w tym, jak uzyskać wszystkie id
zwroty w jednym wierszu, oddzielone przecinkami?
array_agg()
funkcji.
Odpowiedzi:
SELECT string_agg(id::text, ',') FROM table
Wymaga PostgreSQL 9.0, ale to nie jest problem.
string_agg(CAST(id as varchar), ',')
zamiast tego zrobiłem coś takiego:.
string_agg(id::text, ',')
select string_agg(id, ', ' order by id desc) from table
STRING_AGG(DISTINCT customer_name, ',')
Możesz użyć funkcji array () i array_to_string () razem z zapytaniem. ZSELECT array( SELECT id FROM table );
temu otrzymasz wynik taki jak: {1,2,3,4,5,6}
Następnie, jeśli chcesz usunąć znaki {}, możesz po prostu użyć funkcji array_to_string () i użyć przecinka jako separatora, więc: SELECT array_to_string( array( SELECT id FROM table ), ',' )
otrzyma wynik taki jak: 1,2,3,4,5,6
SELECT array_to_string( id, ',' ) AS id FROM table
Możesz wygenerować plik CSV z dowolnego zapytania SQL za pomocą psql:
$ psql
> \o myfile.csv
> \f ','
> \a
> SELECT col1 AS column1, col2 AS column2 ... FROM ...
Wynikowy plik myfile.csv będzie miał nazwy kolumn zestawu wyników SQL jako nagłówki kolumn CSV, a krotki zapytania jako wiersze CSV.
h / t http://pookey.co.uk/wordpress/archives/51-outputting-from-postgres-to-csv
użyj funkcji array_to_string () i array () do tego samego.
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}
Używam Postgres 11 i EntityFramework pobiera go jako tablicę liczb całkowitych.