Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách thêm dấu phân tách vào chuỗi nối trong MySQL - CONCAT_WS ()

Trong MySQL, CONCAT_WS() hàm cho phép bạn thêm dấu phân cách vào các chuỗi được nối. Nếu bạn chỉ sử dụng CONCAT() , bạn sẽ không có dấu phân tách (trừ khi bạn đã thêm dấu phân tách một cách rõ ràng làm đối số giữa mỗi đối số chuỗi).

Cách sử dụng phổ biến của CONCAT_WS() chức năng là tạo một danh sách được phân tách bằng dấu phẩy.

Đây là một ví dụ:

SELECT CONCAT_WS(',','Sydney', 'Australia') AS Location;

Kết quả:

+------------------+
| Location         |
+------------------+
| Sydney,Australia |
+------------------+

Và bạn có thể thêm một khoảng trống vào đó nếu bạn muốn:

SELECT CONCAT_WS(',','Sydney', 'Australia') AS Location;

Kết quả:

+-------------------+
| Location          |
+-------------------+
| Sydney, Australia |
+-------------------+

Dấu phân cách

Không có gì để nói rằng dấu phân cách phải là dấu phẩy. Dấu phân tách có thể là bất kỳ chuỗi nào.

Đây là ví dụ tương tự như ví dụ trước, ngoại trừ ví dụ này sử dụng dấu phân tách khác.

SELECT CONCAT_WS(' - ','Paris', 'France') AS Location;

Kết quả:

+----------------+
| Location       |
+----------------+
| Paris - France |
+----------------+

Một ví dụ về cơ sở dữ liệu

Dưới đây là một ví dụ về truy xuất dữ liệu từ cơ sở dữ liệu và kết hợp hai cột thành một, được phân tách bằng dấu phẩy:

SELECT CONCAT_WS(', ', city.Name, country.Name ) AS Location
FROM city
INNER JOIN country ON
city.CountryCode = country.Code
WHERE country.Code = 'NZL';

Kết quả:

+---------------------------+
| Location                  |
+---------------------------+
| Auckland, New Zealand     |
| Christchurch, New Zealand |
| Manukau, New Zealand      |
| North Shore, New Zealand  |
| Waitakere, New Zealand    |
| Wellington, New Zealand   |
| Dunedin, New Zealand      |
| Hamilton, New Zealand     |
| Lower Hutt, New Zealand   |
+---------------------------+

Giá trị NULL

Nếu bất kỳ đối số nào là NULL giá trị, MySQL sẽ bỏ qua giá trị đó và dấu phân tách của nó, nhưng nó vẫn sẽ xử lý các giá trị khác.

Ví dụ:

SELECT CONCAT_WS(', ','Auckland', NULL, 'New Zealand') AS Location;

Kết quả:

+-----------------------+
| Location              |
+-----------------------+
| Auckland, New Zealand |
+-----------------------+

Dấu phân tách giá trị NULL

Nếu chính dấu phân tách là NULL giá trị, hoạt động nối sẽ trả về NULL .

Ví dụ:

SELECT CONCAT_WS(NULL,'Auckland', NULL, 'New Zealand') AS Location;

Kết quả:

+----------+
| Location |
+----------+
| NULL     |
+----------+

Đây là một trong những điểm khác biệt giữa MySQL và T-SQL (SQL Server, Azure). Trong T-SQL, nếu dấu phân tách là NULL giá trị, các giá trị chuỗi vẫn được nối với nhau, nhưng không có dấu phân tách.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tập lệnh kiểm tra tình trạng sao chép MySQL

  2. Tôi có thể sử dụng một câu lệnh được chuẩn bị sẵn bởi PDO để liên kết một số nhận dạng (một bảng hoặc tên trường) hoặc một từ khóa cú pháp không?

  3. Chuỗi thoát thực và PDO

  4. Vấn đề về ĐẶT HÀNG MYSQL THEO TRƯỜNG HỢP

  5. truy cập bị từ chối đối với tải dữ liệu trong tệp trong MySQL