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

Cách CONCAT_WS () hoạt động trong MariaDB

Trong MariaDB, CONCAT_WS() là một hàm chuỗi tích hợp, viết tắt của Concatenate With Separator.

CONCAT_WS() thực hiện nối chuỗi trên các đối số của nó, với đối số đầu tiên là dấu phân cách cho các đối số còn lại.

Nối là hoạt động nối hai hoặc nhiều chuỗi từ đầu đến cuối.

CONCAT_WS() chấp nhận hai hoặc nhiều đối số (mặc dù chỉ cung cấp hai đối số sẽ dẫn đến không có gì được nối, do đối số đầu tiên là dấu phân cách và đối số thứ hai là một chuỗi đơn được nối với… không có gì khác).

Cú pháp

Cú pháp như sau:

 CONCAT_WS(separator,str1,str2,...) 

Nơi separator là chuỗi được sử dụng làm dấu phân tách và str1, str2, … đại diện cho các đối số chuỗi để nối.

Ví dụ

Đây là một ví dụ cơ bản:

 SELECT CONCAT_WS( ', ', 'Milk', 'Cheese', 'Bread'); 

Kết quả:

 + --------------------------------------------- + | CONCAT_WS (',', 'Sữa', 'Phô mai', 'Bánh mì') | + ------------------------------ --------------- + | Sữa, Phô mai, Bánh mì | + ------------------------------------------- - + 

Trong trường hợp này, chúng tôi đã nối ba chuỗi bằng cách sử dụng dấu phẩy và dấu cách làm dấu phân tách.

Đây là một cái khác sử dụng dấu phân tách khác:

 SELECT CONCAT_WS('-', 'Blue', 'Red', 'Green'); 

Kết quả:

 + ---------------------------------------- + | CONCAT_WS ('-', 'Xanh lam', 'Đỏ', 'Xanh lục') | + ------------------------------ ---------- + | Blue-Red-Green | + ---------------------------------------- +  

CONCAT_WS() tương tự như CONCAT() hàm số. Một trong những lợi ích của CONCAT_WS() qua CONCAT() trở nên rõ ràng khi nối nhiều chuỗi.

Để thực hiện ví dụ trước với CONCAT() , chúng tôi cần lặp lại dấu phân cách giữa mỗi chuỗi.

Như thế này:

 SELECT CONCAT('Blue', '-', 'Red', '-', 'Green'); 

Kết quả:

 + ------------------------------------------ + | CONCAT ('Xanh lam', '-', 'Đỏ', '-', 'Xanh lục') | + -------------------------- ---------------- + | Blue-Red-Green | + ------------------------------------------ + 

Điều này có thể khó sử dụng nếu chúng ta có nhiều chuỗi để nối.

Không có dấu phân tách

Cung cấp một chuỗi trống khi dấu phân tách nối các chuỗi không có dấu phân tách:

 SELECT CONCAT_WS('', 'Blue', 'Red', 'Green'); 

Kết quả:

 + --------------------------------------- + | CONCAT_WS ('', 'Xanh lam', 'Đỏ', 'Xanh lục') | + ------------------------------- -------- + | BlueRedGreen | + --------------------------------------- + 

Trong trường hợp này, chúng tôi nhận được kết quả tương tự khi sử dụng CONCAT() để nối ba chuỗi đó.

Điều quan trọng là phải cung cấp một dấu phân cách, ngay cả khi nó trống. Không cung cấp dấu phân tách sẽ dẫn đến chuỗi nối đầu tiên được sử dụng làm dấu phân tách, đây có thể không phải là điều bạn muốn.

Ví dụ:

 SELECT CONCAT_WS('Blue', 'Red', 'Green', 'Orange'); 

Kết quả:

 + --------------------------------------------- + | CONCAT_WS ('Xanh lam', 'Đỏ', 'Xanh lá cây', 'Cam') | + ------------------------------ --------------- + | RedBlueGreenBlueOrange | + --------------------------------------------- + 

Trong trường hợp này, Blue là đối số đầu tiên và vì vậy nó sẽ được sử dụng làm dấu phân cách.

Nối các đối số rỗng

Một lợi ích khác mà CONCAT_WS() có hơn CONCAT() đó có phải là null không -an toàn.

Nếu bất kỳ đối số nào được nối là null , CONCAT_WS() bỏ qua chúng. CONCAT() mặt khác, trả về null (trừ khi nó ở chế độ Oracle, trong trường hợp đó nó bỏ qua null đối số).

Hãy gọi CONCAT_WS() với null đối số:

 SELECT CONCAT_WS('-', 'Blue', NULL, 'Green'); 

Kết quả:

 + --------------------------------------- + | CONCAT_WS ('-', 'Blue', NULL, 'Green') | + -------------------------------- ------- + | Blue-Green | + --------------------------------------- + 

Như mong đợi, CONCAT_WS() bỏ qua đối số null và nối các đối số còn lại.

Điều này có nghĩa là, nếu chúng tôi cung cấp một chuỗi trống làm dấu phân tách, chúng tôi có thể sử dụng CONCAT_WS() dưới dạng null -phiên bản an toàn của CONCAT() :

 SELECT CONCAT_WS('', 'Blue', NULL, 'Green'); 

Kết quả:

 + -------------------------------------- + | CONCAT_WS ('', 'Blue', NULL, 'Green') | + -------------------------------------------------- ----- + | BlueGreen | + -------------------------------------- + 

Dấu phân cách rỗng

Cung cấp null phân cách là một câu chuyện khác. Thao tác này trả về null .

 SELECT CONCAT_WS(NULL, 'Blue', 'Red', 'Green'); 

Kết quả:

 + ----------------------------------------- + | CONCAT_WS (NULL, "Blue", "Red", "Green") | + -------------------------------- --------- + | NULL | + ----------------------------------------- + 

Chuỗi nhị phân

Nếu bất kỳ đối số nào là chuỗi nhị phân, kết quả là chuỗi nhị phân:

 SELECT CONCAT_WS(', ', BINARY 'Apple', 'Orange'); 

Kết quả:

 + ------------------------------------------- + | CONCAT_WS (',', BINARY 'Apple', 'Orange') | + --------------------------------- ---------- + | Apple, Orange | + ------------------------------------------- + 

Chúng ta có thể sử dụng COLLATION() chức năng kiểm tra sự đối chiếu của kết quả:

 SELECT COLLATION(CONCAT_WS(', ', BINARY 'Apple', 'Orange')); 

Kết quả:

 + ---------------------------------------------- -------- + | COLLATION (CONCAT_WS (',', BINARY 'Apple', 'Orange')) | + ------------------------------ ------------------------ + | nhị phân | + ----------------------------------------------- ------- + 

Nếu chúng tôi xóa BINARY toán tử, chúng tôi nhận được một kết quả khác:

 SELECT COLLATION(CONCAT_WS(', ', 'Apple', 'Orange')); 

Kết quả:

 + ---------------------------------------------- - + | COLLATION (CONCAT_WS (',', 'Apple', 'Orange')) | + ------------------------------- ---------------- + | utf8_general_ci | + ----------------------------------------------- + 

Đối số đơn

Đang gọi CONCAT_WS() chỉ với một đối số trả về lỗi:

 SELECT CONCAT_WS('Blue'); 

Kết quả:

 ERROR 1582 (42000):Số lượng tham số không chính xác trong lệnh gọi hàm gốc 'CONCAT_WS' 

Thiếu đối số

Đang gọi CONCAT_WS() mà không chuyển bất kỳ đối số nào dẫn đến lỗi:

 SELECT CONCAT_WS(); 

Kết quả:

 ERROR 1582 (42000):Số lượng tham số không chính xác trong lệnh gọi hàm gốc 'CONCAT_WS' 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách ADDDATE () hoạt động trong MariaDB

  2. Bạn biết bạn muốn:Di chuyển từ Oracle sang MariaDB

  3. Cách RTRIM () hoạt động trong MariaDB

  4. MariaDB Backup &PostgreSQL trong đám mây - ClusterControl Release 1.6.1

  5. MariaDB LCASE () Giải thích