SQLite có group_concat()
cho phép bạn nối nhiều kết quả trả về cho một cột thành một.
Điều này đôi khi được gọi là "tổng hợp chuỗi".
Ví dụ:khi truy vấn cơ sở dữ liệu, thay vì đặt giá trị của mỗi cột trong một hàng mới, bạn có thể sử dụng group_concat()
để chúng xuất ra dưới dạng danh sách được phân tách bằng dấu phẩy.
Cú pháp
Bạn có thể sử dụng chức năng này theo một trong những cách sau:
group_concat(X)
group_concat(X,Y)
Nói cách khác, group_concat()
hàm có thể được sử dụng với một hoặc hai đối số.
Đối số thứ hai chỉ định một ký tự để sử dụng làm dấu phân tách. Nếu bạn không chỉ định điều này, thì dấu phẩy (,
) sẽ được sử dụng làm dấu phân tách.
Ví dụ với một đối số
Đây là ví dụ về cách gọi group_concat()
với một đối số.
SELECT group_concat(FirstName)
FROM Employee;
Kết quả:
Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura
Nếu tôi không sử dụng group_concat()
để nối cột này, kết quả sẽ như thế này:
SELECT FirstName
FROM Employee;
Kết quả:
Andrew Nancy Jane Margaret Steve Michael Robert Laura
Sử dụng Dấu phân tách tùy chỉnh
Như đã đề cập, bạn có tùy chọn chỉ định ký tự nào sẽ sử dụng làm dấu phân cách.
Dưới đây là một ví dụ về việc chỉ định ký hiệu ống dẫn (|
) làm dấu phân cách.
SELECT group_concat(FirstName, '|')
FROM Employee;
Kết quả:
Andrew|Nancy|Jane|Margaret|Steve|Michael|Robert|Laura
Đây là một phương thức khác sử dụng dấu phẩy, nhưng cũng thêm khoảng trắng vào bên phải dấu phẩy.
SELECT group_concat(FirstName, ', ')
FROM Employee;
Kết quả:
Andrew,Nancy,Jane,Margaret,Steve,Michael,Robert,Laura
Nhóm kết quả
Bạn có thể trả về nhiều cột và sử dụng GROUP BY
mệnh đề để nhóm chúng một cách thích hợp.
Đây là một ví dụ.
SELECT ArtistId, group_concat(AlbumName)
FROM Albums
GROUP BY ArtistId LIMIT 10;
Kết quả:
ArtistId group_concat(AlbumName)
-------- --------------------------------------------------------------------------
1 Powerslave,Somewhere in Time,Piece of Mind,Killers,No Prayer for the Dying
2 Powerage
3 All Night Wrong,The Sixteen Men of Tain
4 Big Swing Face
5 Ziltoid the Omniscient,Casualties of Cool,Epicloud
6 Singing Down the Lane
7 Long Lost Suitcase,Praise and Blame,Along Came Jones
9 No Sound Without Silence
12 Blue Night,Eternity,Scandinavia