По подразбиране два символа с вертикална линия (||
) се третират като логическо OR
оператор в MariaDB. Можете обаче да промените това поведение, ако желаете.
Можете да актуализирате своя sql_mode
за да включите PIPES_AS_CONCAT
опция, в който случай две тръби ще бъдат третирани като оператор на конкатенация.
Има доста начини да добавите тази опция към вашия sql_mode
. Можете да го добавите изрично. Или можете да зададете своя sql_mode
до опция, която го задава имплицитно.
Преглеждам тези опции по-долу.
Добавете PIPES_AS_CONCAT
Изрично
Ако не искате да объркате съществуващия си sql_mode
настройки, можете да изпълните следния код:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Това добавя PIPES_AS_CONCAT
без да премахвате нищо друго. Бих могъл да използвам sql_mode = 'PIPES_AS_CONCAT'
, но щях да загубя всички съществуващи опции. Използването на горната техника гарантира, че няма да загубя съществуващи опции.
Нека проверим моя съществуващ sql_mode
настройки след стартиране на този код:
SELECT @@sql_mode;
Резултат:
PIPES_AS_CONCAT,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Можем да видим, че PIPES_AS_CONCAT
е включен заедно с други опции, които вече съществуват.
ANSI
Друг начин да го направите е да зададете sql_mode
към ANSI
:
SET sql_mode='ANSI';
ANSI
режимът променя синтаксиса и поведението, за да съответства в по-голяма степен на стандартния SQL.
Имайте предвид, че това ще премахне всички съществуващи настройки и ще използва само тези настройки, приложими за ANSI
опция.
За да демонстрираме това, нека да разгледаме отново моя sql_mode
след като го настроите на ANSI
:
SET sql_mode='ANSI';
SELECT @@sql_mode;
Резултат:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
Можем да видим, че моят sql_mode
напълно се промени.
DB2
По същия начин можем да зададем нашия sql_mode
за да сте по-съобразени с различни СУБД.
Ето как да го настроите да използва DB2 конвенции:
SET sql_mode='DB2';
SELECT @@sql_mode;
Резултат:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
Това са опциите, които са в съответствие с DB2.
MaxDB
SET sql_mode='MAXDB';
SELECT @@sql_mode;
Резултат:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
SQL сървър
Използвайте MSSQL
за да го настроите да използва конвенциите на SQL Server:
SET sql_mode='MSSQL';
SELECT @@sql_mode;
Резултат:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MSSQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
Оракул
SET sql_mode='ORACLE';
SELECT @@sql_mode;
Резултат:
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
опцията се добавя само при използване на MariaDB 10.3 и по-нова версия.
PostgreSQL
SET sql_mode='POSTGRESQL';
SELECT @@sql_mode;
Резултат:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS