Theo mặc định, hai ký tự ống dẫn (||
) được coi là OR
lôgic toán tử trong MariaDB. Tuy nhiên, bạn có thể thay đổi hành vi này nếu muốn.
Bạn có thể cập nhật sql_mode
của mình để bao gồm PIPES_AS_CONCAT
tùy chọn, trong trường hợp này, hai đường ống sẽ được coi như một toán tử nối.
Có khá nhiều cách để thêm tùy chọn này vào sql_mode
của bạn . Bạn có thể thêm nó một cách rõ ràng. Hoặc bạn có thể đặt sql_mode
của mình thành một tùy chọn đặt nó một cách ngầm định.
Tôi chạy qua các tùy chọn này bên dưới.
Thêm PIPES_AS_CONCAT
Rõ ràng
Nếu bạn không muốn làm xáo trộn sql_mode
hiện có của mình cài đặt, bạn có thể chạy mã sau:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Điều đó thêm PIPES_AS_CONCAT
mà không cần loại bỏ bất cứ thứ gì khác. Tôi có thể đã sử dụng 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.
Hãy kiểm tra sql_mode
hiện có của tôi cài đặt sau khi chạy mã đó:
SELECT @@sql_mode;
Kết quả:
PIPES_AS_CONCAT,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Chúng ta có thể thấy rằng PIPES_AS_CONCAT
được bao gồm cùng với các tùy chọn khác đã tồn tại.
ANSI
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.
Lưu ý rằng thao tác này sẽ xóa mọi cài đặt hiện có và chỉ sử dụng những cài đặt áp dụng cho ANSI
tùy chọn.
Để chứng minh điều này, chúng ta hãy xem xét lại sql_mode
của tôi sau khi đặt nó thành ANSI
:
SET sql_mode='ANSI';
SELECT @@sql_mode;
Kết quả:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
Chúng tôi có thể thấy rằng sql_mode
của tôi đã hoàn toàn thay đổi.
DB2
Cùng dòng, chúng ta có thể đặt sql_mode
để hòa hợp hơn với các DBMS khác nhau.
Dưới đây là cách đặt nó để sử dụng các quy ước DB2:
SET sql_mode='DB2';
SELECT @@sql_mode;
Kết quả:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
Đó là những tùy chọn phù hợp với DB2.
MaxDB
SET sql_mode='MAXDB';
SELECT @@sql_mode;
Kết quả:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
Máy chủ SQL
Sử dụng MSSQL
để đặt nó sử dụng các quy ước của SQL Server:
SET sql_mode='MSSQL';
SELECT @@sql_mode;
Kết quả:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MSSQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
Oracle
SET sql_mode='ORACLE';
SELECT @@sql_mode;
Kết quả:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT
SIMULTANEOUS_ASSIGNMENT
tùy chọn chỉ được thêm vào khi sử dụng MariaDB 10.3 trở lên.
PostgreSQL
SET sql_mode='POSTGRESQL';
SELECT @@sql_mode;
Kết quả:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS