Som standard to rørtegn (||
) behandles som en logisk OR
operatør i MariaDB. Du kan dog ændre denne adfærd, hvis du vil.
Du kan opdatere din sql_mode
for at inkludere PIPES_AS_CONCAT
mulighed, i hvilket tilfælde to rør vil blive behandlet som en sammenkædningsoperator.
Der er en del måder at tilføje denne mulighed til din sql_mode
. Du kan tilføje det eksplicit. Eller du kan indstille din sql_mode
til en indstilling, der sætter den implicit.
Jeg gennemgår disse muligheder nedenfor.
Tilføj PIPES_AS_CONCAT
Eksplicit
Hvis du ikke ønsker at ødelægge din eksisterende sql_mode
indstillinger, kan du køre følgende kode:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Det tilføjer PIPES_AS_CONCAT
uden at fjerne andet. Jeg kunne have brugt sql_mode = 'PIPES_AS_CONCAT'
, men jeg ville have mistet alle eksisterende muligheder. Brug af ovenstående teknik sikrer, at jeg ikke mister nogen eksisterende muligheder.
Lad os tjekke min eksisterende sql_mode
indstillinger efter at have kørt den kode:
SELECT @@sql_mode;
Resultat:
PIPES_AS_CONCAT,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Vi kan se den PIPES_AS_CONCAT
er inkluderet sammen med andre muligheder, der allerede eksisterede.
ANSI
En anden måde at gøre det på er at indstille sql_mode
til ANSI
:
SET sql_mode='ANSI';
ANSI
tilstand ændrer syntaks og adfærd, så den passer tættere til standard SQL.
Bemærk, at dette vil fjerne alle eksisterende indstillinger og kun bruge de indstillinger, der gælder for ANSI
mulighed.
For at demonstrere dette, lad os tage et nyt kig på min sql_mode
efter at have sat den til ANSI
:
SET sql_mode='ANSI';
SELECT @@sql_mode;
Resultat:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
Vi kan se, at min sql_mode
er fuldstændig ændret.
DB2
På samme måde kan vi indstille vores sql_mode
at være mere i harmoni med forskellige DBMS'er.
Sådan indstilles den til at bruge DB2-konventioner:
SET sql_mode='DB2';
SELECT @@sql_mode;
Resultat:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
Det er de muligheder, der passer til DB2.
MaxDB
SET sql_mode='MAXDB';
SELECT @@sql_mode;
Resultat:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
SQL-server
Brug MSSQL
for at indstille den til at bruge SQL Server-konventioner:
SET sql_mode='MSSQL';
SELECT @@sql_mode;
Resultat:
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;
Resultat:
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
mulighed tilføjes kun, når du bruger MariaDB 10.3 og nyere.
PostgreSQL
SET sql_mode='POSTGRESQL';
SELECT @@sql_mode;
Resultat:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS