sql >> Databasteknik >  >> RDS >> MariaDB

7 alternativ för att aktivera rör (||) som sammanfogningsoperatör i MariaDB

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

  1. Vad är MariaDB TX? Hur man hanterar den nya MariaDB MySQL-gaffeln!

  2. SQL UNION-klausul för nybörjare

  3. psycopg2 motsvarighet till mysqldb.escape_string?

  4. Hur man förstår SQL Server Geografi Data Type