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

Có phương án thay thế CONCAT() trong MySQL không?

Có, phương án thay thế là CONCAT_WS() (Concatenate With Separator).

Tạo bảng demo

mysql> create table DemoTable (
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    StudentName varchar(100)
);
Query OK, 0 rows affected (0.74 sec)

Chèn dữ liệu

mysql> insert into DemoTable(StudentName) values('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(StudentName) values('Robert');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentName) values('Bob');
Query OK, 1 row affected (0.12 sec)

Hiển thị dữ liệu

mysql> select * from DemoTable;

Kết quả

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1         | Chris       |
| 2         | Robert      |
| 3         | Bob         |
+-----------+-------------+
3 rows in set (0.00 sec)

Sử dụng CONCAT_WS() với phân cách là 2 khoảng trắng (SPACE(2))

mysql> select concat_ws(SPACE(2), 'Student Name is:', StudentName) from DemoTable;

Kết quả

+-----------------------------------------------------+
| concat_ws(SPACE(2), 'Student Name is:', StudentName) |
+-----------------------------------------------------+
| Student Name is:  Chris                             |
| Student Name is:  Robert                            |
| Student Name is:  Bob                               |
+-----------------------------------------------------+
3 rows in set (0.04 sec)

So sánh CONCAT vs CONCAT_WS:

HàmCú phápXử lý NULLPhân cách
CONCATCONCAT(str1, str2, ...)NULL → kết quả NULLPhải tự thêm
CONCAT_WSCONCAT_WS(sep, str1, str2, ...)Bỏ qua NULLTự động chèn sep giữa các phần

Ví dụ CONCAT_WS bỏ qua NULL:

SELECT CONCAT_WS('-', 'A', NULL, 'C'); -- Kết quả: 'A-C' (không phải NULL)

Khi nào dùng CONCAT_WS: Ghép nhiều cột với cùng phân cách, dữ liệu có thể NULL, xây dựng CSV, đường dẫn, v.v.