Nối chuỗi trong MySQL: Dùng CONCAT(), không dùng ||
Khác với Oracle (dùng ||) hoặc SQL Server (dùng +), MySQL dùng hàm CONCAT() để nối chuỗi.
Cú pháp
CONCAT(chuoi1, chuoi2, chuoi3, ...)
Trả về NULL nếu bất kỳ đối số nào là NULL. Dùng CONCAT_WS() (With Separator) để tự bỏ qua NULL.
Ví dụ minh họa
Tạo bảng ConcatenationDemo:
CREATE TABLE ConcatenationDemo (Id INT, Name VARCHAR(100));
INSERT INTO ConcatenationDemo VALUES
(100,'John'), (101,'Sam'), (102,'Johnson'), (103,'Carol'), (104,'Bob');
Nối thành định dạng (Id,Name):
SELECT CONCAT('(', Id, ',', Name, ')') AS ConcatIdAndName
FROM ConcatenationDemo;
Kết quả
+-----------------+
| ConcatIdAndName |
+-----------------+
| (100,John) |
| (101,Sam) |
| (102,Johnson) |
| (103,Carol) |
| (104,Bob) |
+-----------------+
CONCAT_WS() - Nối có dấu phân cách
SELECT CONCAT_WS(',', Id, Name) AS CSV_Format
FROM ConcatenationDemo;
+-----------+
| CSV_Format|
+-----------+
| 100,John |
| 101,Sam |
| 102,Johnson|
| 103,Carol |
| 104,Bob |
+-----------+
CONCAT_WS bỏ qua các giá trị NULL, rất tiện cho xuất CSV.
Cài đặt sql_mode PIPES_AS_CONCAT
Nếu muốn dùng || như Oracle, bật chế độ:
SET sql_mode = 'PIPES_AS_CONCAT';
SELECT 'Hello' || 'World'; -- 'HelloWorld'
Nhưng không khuyến nghị do phụ thuộc cấu hình server.