Som standard, två piptecken (||
) behandlas som en logisk OR
operatör i MariaDB. Du kan dock ändra detta beteende om du vill.
Du kan uppdatera ditt sql_mode
för att inkludera PIPES_AS_CONCAT
alternativet, i vilket fall två rör kommer att behandlas som en sammankopplingsoperatör.
Det finns en hel del sätt att lägga till det här alternativet till ditt sql_mode
. Du kan lägga till det uttryckligen. Eller så kan du ställa in ditt sql_mode
till ett alternativ som ställer in det implicit.
Jag går igenom dessa alternativ nedan.
Lägg till PIPES_AS_CONCAT
Explicit
Om du inte vill förstöra ditt befintliga sql_mode
inställningar kan du köra följande kod:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Det lägger till PIPES_AS_CONCAT
utan att ta bort något annat. Jag kunde ha använt sql_mode = 'PIPES_AS_CONCAT'
, men jag skulle ha tappat alla befintliga alternativ. Att använda ovanstående teknik säkerställer att jag inte förlorar några befintliga alternativ.
Låt oss kolla mitt befintliga sql_mode
inställningar efter att ha kört den koden:
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
ingår tillsammans med andra alternativ som redan fanns.
ANSI
Ett annat sätt att göra det är att ställa in sql_mode
till ANSI
:
SET sql_mode='ANSI';
ANSI
läget ändrar syntax och beteende för att överensstämma mer med standard SQL.
Observera att detta tar bort alla befintliga inställningar och använder bara de inställningar som gäller för ANSI
alternativ.
För att demonstrera detta, låt oss ta en ny titt på mitt sql_mode
efter att ha ställt in den på ANSI
:
SET sql_mode='ANSI';
SELECT @@sql_mode;
Resultat:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
Vi kan se att mitt sql_mode
har helt förändrats.
DB2
På samma sätt kan vi ställa in vårt sql_mode
för att vara mer i samklang med olika DBMS.
Så här ställer du in den att använda 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 är de alternativ som passar 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
Använd MSSQL
för att ställa in den att använda 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
alternativet läggs endast till när du använder MariaDB 10.3 och högre.
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