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

Lưu chuỗi vào biến và nối chuỗi hiển thị trong một cột MySQL với CONCAT_WS

MySQL cho phép lưu kết quả nối chuỗi vào biến người dùng (user-defined variable) bằng SET @variable := ... và dùng hàm CONCAT_WS() để nối nhiều cột với ký tự phân cách.

Ví dụ minh họa

Tạo bảng khách hàng:

mysql> CREATE TABLE DemoTable1433 (
    ClientId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientFirstName VARCHAR(20),
    ClientLastName VARCHAR(20)
);

Chèn dữ liệu:

mysql> INSERT INTO DemoTable1433 (ClientFirstName, ClientLastName) VALUES ('David', 'Miller');

Xem dữ liệu:

mysql> SELECT * FROM DemoTable1433;
+----------+-----------------+----------------+
| ClientId | ClientFirstName | ClientLastName |
+----------+-----------------+----------------+
|        1 | David           | Miller         |
+----------+-----------------+----------------+

Nối chuỗi và lưu vào biến

Sử dụng CONCAT_WS() (Concatenate With Separator):

mysql> SET @concat_variable := (
    SELECT CONCAT_WS('-', ClientFirstName, ClientLastName) 
    FROM DemoTable1433
);

Hiển thị biến:

mysql> SELECT @concat_variable;
+------------------+
| @concat_variable |
+------------------+
| David-Miller     |
+------------------+

So sánh CONCAT vs CONCAT_WS

HàmCú phápXử lý NULLVí dụ kết quả
CONCAT()CONCAT(a, b, c)Trả về NULL nếu bất kỳ tham số nào NULLCONCAT('A', NULL, 'C') → NULL
CONCAT_WS()CONCAT_WS(sep, a, b, c)Bỏ qua NULL, chỉ nối các giá trị không NULLCONCAT_WS('-', 'A', NULL, 'C') → 'A-C'

Ứng dụng thực tế

Nối họ tên, địa chỉ, hoặc tạo slug URL từ nhiều cột. Ví dụ tạo email:

SELECT CONCAT_WS('@', CONCAT_WS('.', LOWER(FirstName), LOWER(LastName)), 'company.com') 
FROM Employees;