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

Nối chuỗi văn bản trong mệnh đề SELECT MySQL với CONCAT()

Sử dụng hàm CONCAT() trong mệnh đề SELECT để nối nhiều cột/chuỗi thành một cột kết quả.

Cú pháp

SELECT CONCAT(cột1, 'chuỗi_cố_định', cột2, ...) AS alias FROM tên_bảng;

Ví dụ minh họa

Tạo bảng demo:

mysql> CREATE TABLE ConcatenatingDemo (
    -> UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> UserName VARCHAR(20),
    -> UserCountryName VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.82 sec)

Chèn dữ liệu:

mysql> INSERT INTO ConcatenatingDemo(UserName, UserCountryName) VALUES
    -> ('John', 'US'), ('Carol', 'UK'), ('Bob', 'AUS'), ('David', 'US');

Xem dữ liệu:

mysql> SELECT * FROM ConcatenatingDemo;
+--------+----------+-----------------+
| UserId | UserName | UserCountryName |
+--------+----------+-----------------+
| 1      | John     | US              |
| 2      | Carol    | UK              |
| 3      | Bob      | AUS             |
| 4      | David    | US              |
+--------+----------+-----------------+

Nối chuỗi: "Tên belongs to ( Quốc_gia )":

mysql> SELECT CONCAT(UserName, ' belongs to ( ', UserCountryName, ' )') AS AddingTextDemo 
    -> FROM ConcatenatingDemo;
+-------------------------+
| AddingTextDemo          |
+-------------------------+
| John belongs to ( US )  |
| Carol belongs to ( UK ) |
| Bob belongs to ( AUS )  |
| David belongs to ( US ) |
+-------------------------+

CONCAT_WS() - Nối với dấu phân cách (Separator)

SELECT CONCAT_WS(' - ', UserName, UserCountryName) FROM ConcatenatingDemo;
+----------------------------------+
| CONCAT_WS(' - ', UserName, ...)  |
+----------------------------------+
| John - US                        |
| Carol - UK                       |
| Bob - AUS                        |
| David - US                       |
+----------------------------------+

CONCAT_WS = CONCAT With Separator. Tự động bỏ qua NULL.

Xử lý NULL an toàn

-- Nếu UserName NULL, CONCAT trả về NULL
SELECT CONCAT(UserName, ' - ', UserCountryName);

-- Dùng COALESCE
SELECT CONCAT(COALESCE(UserName, 'Unknown'), ' - ', UserCountryName);

-- Hoặc CONCAT_WS (bỏ qua NULL)
SELECT CONCAT_WS(' - ', UserName, UserCountryName);

Ứng dụng thực tế

  • Tạo full_name: CONCAT(first_name, ' ', last_name)
  • Tạo địa chỉ đầy đủ: CONCAT_WS(', ', address, city, country)
  • Tạo slug/URL: CONCAT('/', category, '/', product_slug)
  • Log/audit: CONCAT('User ', user_id, ' updated ', table_name)