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