Giả sử bạn có một SELECT id from table
truy vấn (trường hợp thực là một truy vấn phức tạp) trả về cho bạn một số kết quả.
Vấn đề là làm thế nào để tất cả id
trả về trong một hàng duy nhất, phân cách bằng dấu phẩy?
array_agg()
chức năng nói riêng.
Giả sử bạn có một SELECT id from table
truy vấn (trường hợp thực là một truy vấn phức tạp) trả về cho bạn một số kết quả.
Vấn đề là làm thế nào để tất cả id
trả về trong một hàng duy nhất, phân cách bằng dấu phẩy?
array_agg()
chức năng nói riêng.
Câu trả lời:
SELECT string_agg(id::text, ',') FROM table
Yêu cầu PostgreSQL 9.0 nhưng đó không phải là vấn đề.
string_agg(CAST(id as varchar), ',')
thay vào đó.
string_agg(id::text, ',')
select string_agg(id, ', ' order by id desc) from table
STRING_AGG(DISTINCT customer_name, ',')
Bạn có thể sử dụng các hàm array () và array_to_string () để kết hợp với truy vấn của mình. Với SELECT array( SELECT id FROM table );
bạn sẽ nhận được kết quả như: {1,2,3,4,5,6}
Sau đó, nếu bạn muốn loại bỏ các dấu {}, bạn chỉ có thể sử dụng hàm array_to_string () và sử dụng dấu phẩy làm dấu phân cách, như vậy: SELECT array_to_string( array( SELECT id FROM table ), ',' )
sẽ nhận được kết quả như: 1,2,3,4,5,6
SELECT array_to_string( id, ',' ) AS id FROM table
Bạn có thể tạo CSV từ bất kỳ truy vấn SQL nào bằng psql:
$ psql
> \o myfile.csv
> \f ','
> \a
> SELECT col1 AS column1, col2 AS column2 ... FROM ...
Myfile.csv kết quả sẽ có tên cột tập kết quả SQL làm tiêu đề cột CSV và bộ truy vấn dưới dạng hàng CSV.
h / t http://pookey.co.uk/wordpress/archives/51-outputting-from-postgres-to-csv
sử dụng hàm array_to_string () & array () cho giống nhau.
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}
Tôi đang sử dụng Postgres 11 và EntityFramework đang tìm nạp nó dưới dạng một mảng các số nguyên.