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

Cách kích hoạt toán tử nối ống trong MySQL

MySQL hỗ trợ việc sử dụng toán tử nối ống (|| ) để nối các toán hạng của nó. Tuy nhiên, bạn cần phải kích hoạt nó trước.

Theo mặc định, MySQL xử lý || như một OR lôgic toán tử (mặc dù phương pháp điều trị này hiện không được dùng nữa). Tuy nhiên, tiêu chuẩn ANSI yêu cầu || là một toán tử nối. Có lẽ bạn có mã đã sử dụng toán tử nối ống dẫn và bạn không muốn chuyển qua và thay đổi mã để sử dụng CONCAT() chức năng.

May mắn thay, MySQL cung cấp cho chúng ta khả năng chỉ định xem có coi nó như một OR logic hay không toán tử hoặc một toán tử nối.

Bạn có thể bật || làm toán tử nối bằng cách đặt tùy chọn thích hợp trong sql_mode của bạn .

Bạn có hai lựa chọn:

  • Thêm PIPES_AS_CONCAT tới sql_mode của bạn
  • Đặt sql_mode thành ANSI .

Tùy chọn 1

Tại đây, tôi thêm PIPES_AS_CONCAT tới sql_mode của tôi :

SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT')); 

Đúng là tôi có thể vừa đi sql_mode = 'PIPES_AS_CONCAT' , nhưng tôi sẽ mất tất cả các tùy chọn hiện có. Sử dụng kỹ thuật trên đảm bảo rằng tôi không mất bất kỳ tùy chọn hiện có nào.

Tùy chọn 2

Một cách khác để làm điều đó là đặt sql_mode thành ANSI :

SET sql_mode='ANSI';

ANSI chế độ thay đổi cú pháp và hành vi để phù hợp hơn với SQL chuẩn.

Kiểm tra sql_mode của bạn

Bạn có thể kiểm tra sql_mode của mình như thế này:

SELECT @@sql_mode;

Kết quả:

REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI

Đó là kết quả tôi nhận được sau khi đổi thành ANSI cách thức. Chúng ta có thể thấy PIPES_AS_CONCAT được đưa vào danh sách các tùy chọn.

Ví dụ về nối

Sau khi đặt sql_mode bằng một trong các kỹ thuật trên, bây giờ chúng ta có thể sử dụng || như một toán tử nối ống:

SELECT 'Homer' || 'Symptom';

Kết quả:

HomerSymptom

Nếu chúng tôi không bật toán tử nối ống dẫn, rất có thể chúng tôi đã nhận được một kết quả không mong muốn với một cảnh báo.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khớp tất cả các giá trị trong mệnh đề IN

  2. Tính tổng các giá trị của mảng nhiều chiều theo khóa không có vòng lặp

  3. Hướng dẫn thiết kế cơ sở dữ liệu cho hệ thống quản lý nhân viên trong MySQL

  4. Bật kết nối MySQL từ xa:LỖI 1045 (28000):Quyền truy cập bị từ chối đối với người dùng

  5. MySql Single Table, Chọn 7 ngày qua và bao gồm các hàng trống