sql >> Database >  >> RDS >> MariaDB

7 opties voor het inschakelen van leidingen (||) als aaneenschakelingsoperator in MariaDB

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

  1. Tijdreeksen genereren tussen twee datums in PostgreSQL

  2. PostgreSQL-procesnamen op Solaris

  3. Kolomwaarden omwisselen in MySQL

  4. Hoe een pakket maken in Oracle SQL Developer?