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

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

Trong MariaDB, CONCAT() là một hàm chuỗi được tích hợp sẵn để thực hiện nối chuỗi trên các đối số của nó. Nó trả về chuỗi là kết quả của việc nối các đối số của nó.

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

CONCAT() chấp nhận một hoặc nhiều đối số, tất cả đều được trả về dưới dạng một chuỗi được nối đơn lẻ.

Cú pháp

Cú pháp như sau:

 CONCAT( str1, str2, ... ) 

Trong đó 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('Homer', 'Jay'); 

Kết quả:

 + ------------------------ + | CONCAT ('Homer', 'Jay') | + ------------------------ + | HomerJay | + ------------------------ + 

Trong trường hợp này, chúng tôi đã nối hai chuỗi.

Đây là một lần nữa, nhưng lần này chúng tôi thêm một khoảng trắng ở giữa:

 SELECT CONCAT('Homer', ' ', 'Jay'); 

Kết quả:

 + ----------------------------- + | CONCAT ('Homer', '', 'Jay') | + ----------------------------- + | Homer Jay | + ----------------------------- + 

Trong trường hợp này, chúng tôi đã nối ba chuỗi.

Đây là với năm:

 SELECT CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson'); 

Kết quả:

 + --------------------------------------------- + | CONCAT ('Homer', '', 'Jay', '', 'Simpson') | + ---------------------------- ----------------- + | Homer Jay Simpson | + --------------------------------------------- + 

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(BINARY 'Homer', 'Jay'); 

Kết quả:

 + ------------------------------- + | CONCAT (BINARY 'Homer', 'Jay') | + ------------------------------- + | HomerJay | + ------------------------------- + 

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(BINARY 'Homer', 'Jay')); 

Kết quả:

 + ------------------------------------------ + | COLLATION (CONCAT (BINARY 'Homer', 'Jay')) | + ---------------------------------- -------- + | 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('Homer', 'Jay')); 

Kết quả:

 + ----------------------------------- + | COLLATION (CONCAT ('Homer', 'Jay')) | + ----------------------------------- + | utf8_general_ci | + ----------------------------------- + 

Ngoài ra, theo tài liệu MariaDB, các đối số số được chuyển đổi sang dạng chuỗi nhị phân tương đương của chúng. Bạn có thể tránh điều này bằng cách truyền kiểu rõ ràng (sử dụng CAST() hoặc CONVERT() ).

Đối số rỗng

Nếu bất kỳ đối số nào là null , CONCAT() trả về null .

Tuy nhiên, có một ngoại lệ:Khi ở chế độ Oracle (tức là sql_mode=ORACLE ), bất kỳ null nào các đối số chỉ đơn giản là bị bỏ qua.

Đầu tiên, hãy xem cách CONCAT() hoạt động ở chế độ mặc định.

Đặt phiên của chúng tôi thành chế độ mặc định:

 SET SESSION sql_mode=DEFAULT; 

Bây giờ hãy chạy CONCAT() với null đối số:

 SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson'); 

Kết quả:

 + -------------------------------------------- + | CONCAT ('Homer', '', null, '', 'Simpson') | + ------------------------------ -------------- + | NULL | + -------------------------------------------- +  

Như mong đợi, kết quả là null .

Bây giờ, hãy chuyển phiên của chúng ta sang chế độ Oracle:

 SET SESSION sql_mode=ORACLE; 

Và bây giờ chúng ta hãy chạy CONCAT() trước đó ví dụ một lần nữa:

 SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson'); 

Kết quả:

 + -------------------------------------------- + | CONCAT ('Homer', '', null, '', 'Simpson') | + ------------------------------ -------------- + | Homer Simpson | + -------------------------------------------- + 

Lần này nó bỏ qua null và nối tất cả các đối số không phải null còn lại tranh luận. Nếu quan sát kỹ, bạn sẽ thấy rằng nó đã nối cả hai khoảng trắng, vì vậy có một khoảng trắng kép ở giữa HomerSimpson .

Đối với một null - an toàn thay thế, sử dụng CONCAT_WS() . Hàm đó bỏ qua null giá trị, ngay cả khi không ở chế độ Oracle.

Ngoài ra, bạn có thể sử dụng IFNULL() để cung cấp giá trị (chuỗi) thay thế cho null giá trị (chẳng hạn như một chuỗi trống).

Đối số đơn

Đang gọi CONCAT() chỉ với một đối số chỉ đơn giản trả về đối số đó:

 SELECT CONCAT('Homer'); 

Kết quả:

 + ----------------- + | CONCAT ('Homer') | + ----------------- + | Homer | + ----------------- + 

Thiếu đối số

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

 SELECT CONCAT(); 

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' 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 cách để kiểm tra kiểu dữ liệu của cột trong MariaDB

  2. Cách liệt kê tất cả các thủ tục được lưu trữ trong MariaDB

  3. Cách hoạt động của RPAD () trong MariaDB

  4. Sử dụng Plugin nhật ký kiểm tra Percona để bảo mật cơ sở dữ liệu

  5. Kết hợp sức mạnh của SQL và các câu lệnh thủ tục với Chế độ tương thích Oracle của MariaDB