MariaDB
 sql >> Database >  >> RDS >> MariaDB

7 Opzioni per abilitare le pipe (||) come operatore di concatenazione in MariaDB

Per impostazione predefinita, due caratteri pipe (|| ) sono trattati come un OR logico operatore in MariaDB. Tuttavia, puoi modificare questo comportamento se lo desideri.

Puoi aggiornare il tuo sql_mode per includere il PIPES_AS_CONCAT opzione, nel qual caso due pipe verranno trattate come un operatore di concatenazione.

Esistono diversi modi per aggiungere questa opzione al tuo sql_mode . Puoi aggiungerlo in modo esplicito. Oppure puoi impostare il tuo sql_mode a un'opzione che lo imposta in modo implicito.

Eseguo queste opzioni di seguito.

Aggiungi PIPES_AS_CONCAT Esplicitamente

Se non vuoi rovinare il tuo sql_mode esistente impostazioni, puoi eseguire il seguente codice:

SET sql_mode=(SELECT CONCAT(@@sql_mode,',PIPES_AS_CONCAT')); 

Questo aggiunge PIPES_AS_CONCAT senza togliere nient'altro. Avrei potuto usare sql_mode = 'PIPES_AS_CONCAT' , ma avrei perso tutte le opzioni esistenti. L'utilizzo della tecnica di cui sopra mi assicura di non perdere alcuna opzione esistente.

Controlliamo il mio sql_mode esistente impostazioni dopo aver eseguito quel codice:

SELECT @@sql_mode;

Risultato:

PIPES_AS_CONCAT,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

Possiamo vedere che PIPES_AS_CONCAT è incluso insieme ad altre opzioni già esistenti.

ANSI

Un altro modo per farlo è impostare sql_mode a ANSI :

SET sql_mode='ANSI';

ANSI la modalità cambia la sintassi e il comportamento per conformarsi più strettamente allo standard SQL.

Tieni presente che questo rimuoverà tutte le impostazioni esistenti e utilizzerà solo le impostazioni applicabili a ANSI opzione.

Per dimostrarlo, diamo un'altra occhiata al mio sql_mode dopo averlo impostato su ANSI :

SET sql_mode='ANSI';
SELECT @@sql_mode;

Risultato:

REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ANSI

Possiamo vedere che il mio sql_mode è completamente cambiato.

DB2

Sulla stessa linea, possiamo impostare il nostro sql_mode per essere più in sintonia con i vari DBMS.

Ecco come impostarlo per utilizzare le convenzioni DB2:

SET sql_mode='DB2';
SELECT @@sql_mode;

Risultato:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,DB2,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS

Queste sono le opzioni che si allineano con DB2.

MaxDB

SET sql_mode='MAXDB';
SELECT @@sql_mode;

Risultato:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MAXDB,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER

SQL Server

Usa MSSQL per impostarlo per utilizzare le convenzioni di SQL Server:

SET sql_mode='MSSQL';
SELECT @@sql_mode;

Risultato:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,MSSQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS

Oracolo

SET sql_mode='ORACLE';
SELECT @@sql_mode;

Risultato:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ORACLE,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS,NO_AUTO_CREATE_USER,SIMULTANEOUS_ASSIGNMENT

Il SIMULTANEOUS_ASSIGNMENT l'opzione viene aggiunta solo quando si utilizza MariaDB 10.3 e versioni successive.

PostgreSQL

SET sql_mode='POSTGRESQL';
SELECT @@sql_mode;

Risultato:

PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,POSTGRESQL,NO_KEY_OPTIONS,NO_TABLE_OPTIONS,NO_FIELD_OPTIONS