По подразбиране два символа с вертикална линия (|| ) се третират като логическо 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