Standardmäßig werden zwei senkrechte Striche (||
) werden als logisches OR
behandelt Operator in MariaDB. Sie können dieses Verhalten jedoch ändern, wenn Sie möchten.
Sie können Ihren sql_mode
aktualisieren um den PIPES_AS_CONCAT
einzuschließen Option, in diesem Fall werden zwei Pipes als Verkettungsoperator behandelt.
Es gibt mehrere Möglichkeiten, diese Option zu Ihrem sql_mode
hinzuzufügen . Sie können es explizit hinzufügen. Oder Sie können Ihren sql_mode
einstellen zu einer Option, die es implizit setzt.
Ich gehe diese Optionen unten durch.
Fügen Sie PIPES_AS_CONCAT
hinzu Ausdrücklich
Wenn Sie Ihren bestehenden sql_mode
nicht durcheinander bringen wollen Einstellungen können Sie den folgenden Code ausführen:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Das fügt PIPES_AS_CONCAT
hinzu ohne etwas anderes zu entfernen. Ich hätte sql_mode = 'PIPES_AS_CONCAT'
verwenden können , aber ich hätte alle bestehenden Optionen verloren. Die Verwendung der obigen Technik stellt sicher, dass ich keine bestehenden Optionen verliere.
Lassen Sie uns meinen vorhandenen sql_mode
überprüfen Einstellungen nach dem Ausführen dieses Codes:
SELECT @@sql_mode;
Ergebnis:
PIPES_AS_CONCAT,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Wir können diesen PIPES_AS_CONCAT
sehen ist zusammen mit anderen bereits vorhandenen Optionen enthalten.
ANSI
Eine andere Möglichkeit besteht darin, den sql_mode
festzulegen zu ANSI
:
SET sql_mode='ANSI';
ANSI
mode ändert Syntax und Verhalten, um mehr mit Standard-SQL übereinzustimmen.
Beachten Sie, dass dadurch alle vorhandenen Einstellungen entfernt werden und nur die Einstellungen verwendet werden, die für ANSI
gelten Option.
Um dies zu demonstrieren, werfen wir einen weiteren Blick auf meinen sql_mode
nachdem Sie es auf ANSI
gesetzt haben :
SET sql_mode='ANSI';
SELECT @@sql_mode;
Ergebnis:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
Wir können sehen, dass mein sql_mode
hat sich komplett verändert.
DB2
Auf die gleiche Weise können wir unseren sql_mode
setzen besser mit verschiedenen DBMSs in Einklang zu bringen.
So stellen Sie es auf die Verwendung von DB2-Konventionen ein:
SET sql_mode='DB2';
SELECT @@sql_mode;
Ergebnis:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
Das sind die Optionen, die mit DB2 übereinstimmen.
MaxDB
SET sql_mode='MAXDB';
SELECT @@sql_mode;
Ergebnis:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
SQL-Server
Verwenden Sie MSSQL
um es auf die Verwendung von SQL Server-Konventionen einzustellen:
SET sql_mode='MSSQL';
SELECT @@sql_mode;
Ergebnis:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MSSQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
Orakel
SET sql_mode='ORACLE';
SELECT @@sql_mode;
Ergebnis:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT
Das SIMULTANEOUS_ASSIGNMENT
Option wird nur hinzugefügt, wenn MariaDB 10.3 und höher verwendet wird.
PostgreSQL
SET sql_mode='POSTGRESQL';
SELECT @@sql_mode;
Ergebnis:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS