Ve výchozím nastavení jsou dva svislé znaky (||
) jsou považovány za logické OR
operátor v MariaDB. Toto chování však můžete změnit, pokud chcete.
Svůj sql_mode
můžete aktualizovat zahrnout PIPES_AS_CONCAT
možnost, v takovém případě budou dvě roury považovány za operátor zřetězení.
Existuje několik způsobů, jak přidat tuto možnost do vašeho sql_mode
. Můžete to přidat explicitně. Nebo můžete nastavit svůj sql_mode
na možnost, která jej nastavuje implicitně.
Níže si projdu tyto možnosti.
Přidat PIPES_AS_CONCAT
Explicitně
Pokud si nechcete pokazit svůj stávající sql_mode
nastavení, můžete spustit následující kód:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Tím se přidá PIPES_AS_CONCAT
aniž byste odstranili něco jiného. Mohl jsem použít sql_mode = 'PIPES_AS_CONCAT'
, ale ztratil bych všechny stávající možnosti. Použití výše uvedené techniky zajistí, že neztratím žádné existující možnosti.
Pojďme zkontrolovat můj stávající sql_mode
nastavení po spuštění tohoto kódu:
SELECT @@sql_mode;
Výsledek:
PIPES_AS_CONCAT,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Vidíme, že PIPES_AS_CONCAT
je zahrnuta spolu s dalšími možnostmi, které již existovaly.
ANSI
Dalším způsobem, jak to udělat, je nastavit sql_mode
na ANSI
:
SET sql_mode='ANSI';
ANSI
režim mění syntaxi a chování tak, aby více odpovídaly standardnímu SQL.
Upozorňujeme, že tímto odstraníte všechna stávající nastavení a použijete pouze nastavení platná pro ANSI
možnost.
Abychom to demonstrovali, podívejme se znovu na můj sql_mode
po nastavení na ANSI
:
SET sql_mode='ANSI';
SELECT @@sql_mode;
Výsledek:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
Vidíme, že můj sql_mode
se úplně změnil.
DB2
Ve stejném duchu můžeme nastavit náš sql_mode
být více v souladu s různými DBMS.
Zde je návod, jak jej nastavit, aby používal konvence DB2:
SET sql_mode='DB2';
SELECT @@sql_mode;
Výsledek:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
Toto jsou volby, které jsou v souladu s DB2.
MaxDB
SET sql_mode='MAXDB';
SELECT @@sql_mode;
Výsledek:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
SQL Server
Použijte MSSQL
nastavte jej tak, aby používal konvence SQL Server:
SET sql_mode='MSSQL';
SELECT @@sql_mode;
Výsledek:
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;
Výsledek:
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
možnost je přidána pouze při použití MariaDB 10.3 a vyšší.
PostgreSQL
SET sql_mode='POSTGRESQL';
SELECT @@sql_mode;
Výsledek:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS