07/09/2018, 11:13

Nối chuỗi trong MySQL sử dụng CONCAT() và CONCAT_WS()

Trong một số tình huống khi làm việc với kiểu dữ liệu chuỗi (hay string) trong cơ sở dữ liệu MySQL chúng ta cần nối các chuỗi với nhau trước khi trả về kết quả. Ví dụ trong bảng users bạn có cột first_name, middle_name và last_name và bạn muốn nối hai chuỗi từ ba cột tương ứng này để hiển thị tên ...

Trong một số tình huống khi làm việc với kiểu dữ liệu chuỗi (hay string) trong cơ sở dữ liệu MySQL chúng ta cần nối các chuỗi với nhau trước khi trả về kết quả. Ví dụ trong bảng users bạn có cột first_name, middle_name và last_name và bạn muốn nối hai chuỗi từ ba cột tương ứng này để hiển thị tên đầy đủ của người dùng.

Nỗi chuỗi trong MySQL

Trong MySQL chúng ta có thể sử dụng hàmconcat() và concat_ws() để thực hiện công việc này.

MySQL CONCAT()

Hàm CONCAT() trong MySQL được dùng để nối hai hoặc nhiều chuỗi với nhau:

Một ví dụ đơn giản sau:

SELECT CONCAT("Học ", "MySQL ", "trên ", "CodeHub.vn!");

Lưu ý rằng ở câu SQL query trên ở cuối mỗi chuỗi chúng ta cần thêm khoảng trắng (từ chuỗi cuối cùng CodeHub.vn!).

Kết quả hiển thị:

+-----------------------------------------------------+
| CONCAT("Học ", "MySQL ", "trên ", "CodeHub.vn!")    |
+-----------------------------------------------------+
| Học MySQL trên CodeHub.vn!                          |
+-----------------------------------------------------+
1 row in set (0.00 sec)

Nếu bạn muốn đánh tên cho cột dữ liệu trả về từ hàm CONCAT():

SELECT CONCAT("Học ", "MySQL ", "trên ", "CodeHub.vn!") AS my_string;

Kết quả hiển thị:

+-------------------------------+
| my_string                     |
+-------------------------------+
| Học MySQL trên CodeHub.vn!    |
+-------------------------------+
1 row in set (0.00 sec)

Áp dụng đối với trường hợp nối chuỗi từ các cột trên bảng users như đề cập ở trên bạn có thể sử dụng hàm CONCAT() như sau:

SELECT CONCAT(first_name, " ", middle_name, " ", last_name) AS full_name from users;

Hàm MySQL CONCAT_WS()

Hàm CONCAT() trong MySQL được dùng để nối hai hoặc nhiều chuỗi với nhau và thêm ký tự phân biệt (separator) giữa mỗi chuối được nối.

Một ví dụ đơn giản sau:

SELECT CONCAT_WS(" ", "Học ", "MySQL ", "trên ", "CodeHub.vn!");

Với câu query trên chúng ta sử dụng hàm CONCAT_WS() với separator là khoảng trắng " " được sử dụng là đối số đầu tiên trong hàm.

Kết quả hiển thị:

+-------------------------------------------------------------+
| CONCAT_WS(" ", "Học ", "MySQL ", "trên ", "CodeHub.vn!")    |
+-------------------------------------------------------------+
| Học  MySQL  trên  CodeHub.vn!                               |
+-------------------------------------------------------------+
1 row in set (0.01 sec)

Áp dụng đối với trường hợp nối chuỗi từ các cột trên bảng users như đề cập ở trên bạn có thể sử dụng hàm CONCAT_WS() như sau:

SELECT CONCAT(" ", first_name, middle_name, last_name) AS full_name from users;

Hàm CONCAT_WS() rất thuận tiện trong trường hợp bạn cần nối nhiều chuỗi và giữa mỗi chuỗi cần thêm một ký tự phân biệt.

0