Standaard twee sluistekens (||
) worden behandeld als een logische OR
operator in MariaDB. U kunt dit gedrag echter desgewenst wijzigen.
U kunt uw sql_mode
. bijwerken om de PIPES_AS_CONCAT
. op te nemen optie, in welk geval twee leidingen worden behandeld als een aaneenschakelingsoperator.
Er zijn nogal wat manieren om deze optie toe te voegen aan je sql_mode
. U kunt het expliciet toevoegen. Of u kunt uw sql_mode
. instellen naar een optie die het impliciet instelt.
Ik doorloop deze opties hieronder.
Voeg PIPES_AS_CONCAT
toe Expliciet
Als je je bestaande sql_mode
niet wilt verknoeien instellingen, kunt u de volgende code uitvoeren:
SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT'));
Dat voegt PIPES_AS_CONCAT
. toe zonder iets anders te verwijderen. Ik had sql_mode = 'PIPES_AS_CONCAT'
kunnen gebruiken , maar dan zou ik alle bestaande opties kwijt zijn. Door de bovenstaande techniek te gebruiken, zorg ik ervoor dat ik geen bestaande opties verlies.
Laten we eens kijken naar mijn bestaande sql_mode
instellingen na het uitvoeren van die code:
SELECT @@sql_mode;
Resultaat:
PIPES_AS_CONCAT,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
We kunnen zien dat PIPES_AS_CONCAT
is inbegrepen samen met andere opties die al bestonden.
ANSI
Een andere manier om dit te doen is door de sql_mode
. in te stellen naar ANSI
:
SET sql_mode='ANSI';
ANSI
modus verandert de syntaxis en het gedrag om beter overeen te komen met standaard SQL.
Houd er rekening mee dat hiermee alle bestaande instellingen worden verwijderd en alleen die instellingen worden gebruikt die van toepassing zijn op de ANSI
optie.
Laten we om dit te demonstreren nog eens kijken naar mijn sql_mode
na het instellen op ANSI
:
SET sql_mode='ANSI';
SELECT @@sql_mode;
Resultaat:
REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI
We kunnen zien dat mijn sql_mode
is volledig veranderd.
DB2
Op dezelfde manier kunnen we onze sql_mode
. instellen om beter af te stemmen op verschillende DBMS'en.
Zo stelt u het in om DB2-conventies te gebruiken:
SET sql_mode='DB2';
SELECT @@sql_mode;
Resultaat:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS
Dat zijn de opties die passen bij DB2.
MaxDB
SET sql_mode='MAXDB';
SELECT @@sql_mode;
Resultaat:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER
SQL-server
Gebruik MSSQL
om het in te stellen om SQL Server-conventies te gebruiken:
SET sql_mode='MSSQL';
SELECT @@sql_mode;
Resultaat:
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;
Resultaat:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT
De SIMULTANEOUS_ASSIGNMENT
optie wordt alleen toegevoegd bij gebruik van MariaDB 10.3 en hoger.
PostgreSQL
SET sql_mode='POSTGRESQL';
SELECT @@sql_mode;
Resultaat:
PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS