Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Nối tất cả giá trị của một cột thành chuỗi trong MySQL với GROUP_CONCAT

Để gộp toàn bộ giá trị của một cột thành một chuỗi duy nhất, phân tách bằng dấu phẩy (hoặc ký tự tùy chọn), MySQL cung cấp hàm GROUP_CONCAT(). Kết hợp với CONCAT() có thể thêm dấu ngoặc, ký tự đặc biệt cho mỗi giá trị.

Tạo bảng và chèn dữ liệu

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    FirstName VARCHAR(20)
);

mysql> INSERT INTO DemoTable (FirstName) VALUES 
('John'), ('Larry'), ('Chris'), ('Robert'), ('David');

Xem dữ liệu

mysql> SELECT * FROM DemoTable;
+----+-----------+
| Id | FirstName |
+----+-----------+
|  1 | John      |
|  2 | Larry     |
|  3 | Chris     |
|  4 | Robert    |
|  5 | David     |
+----+-----------+

Nối chuỗi với định dạng tùy chỉnh

Ví dụ: đưa mỗi tên vào trong dấu ngoặc kép " " và phân tách bằng dấu phẩy:

mysql> SELECT GROUP_CONCAT(CONCAT('"', FirstName, '"')) AS FirstName 
FROM DemoTable;

Kết quả

+-----------------------------------------+
| FirstName                               |
+-----------------------------------------+
| "John","Larry","Chris","Robert","David" |
+-----------------------------------------+

Tùy chọn phân tách (SEPARATOR)

Mặc định GROUP_CONCAT dùng dấu phẩy. Bạn có thể đổi bằng mệnh đề SEPARATOR:

SELECT GROUP_CONCAT(FirstName SEPARATOR '; ') AS Names FROM DemoTable;

Kết quả: John; Larry; Chris; Robert; David

Lưu ý: Độ dài mặc định của kết quả GROUP_CONCAT là 1024 ký tự. Nếu dữ liệu lớn, hãy tăng group_concat_max_len trước khi truy vấn: SET SESSION group_concat_max_len = 1000000;.