MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

7 Optionen zum Aktivieren von Pipes (||) als Verkettungsoperator in MariaDB

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