Mysql
 sql >> Database >  >> RDS >> Mysql

Come abilitare l'operatore di concatenazione di pipe in MySQL

MySQL supporta l'uso dell'operatore di concatenazione pipe (|| ) per concatenare i suoi operandi. Tuttavia, devi prima abilitarlo.

Per impostazione predefinita, MySQL tratta || come OR logico operatore (sebbene questo trattamento sia attualmente deprecato). Tuttavia, lo standard ANSI richiede che || è un operatore di concatenazione. Forse hai un codice che utilizza già l'operatore di concatenazione pipe e preferiresti non passare e modificare il codice per utilizzare CONCAT() funzione.

Fortunatamente, MySQL ci offre la possibilità di specificare se trattarlo come un OR logico operatore o un operatore di concatenazione.

Puoi abilitare || come operatore di concatenazione impostando l'opzione applicabile nel tuo sql_mode .

Hai due opzioni:

  • Aggiungi PIPES_AS_CONCAT al tuo sql_mode
  • Imposta sql_mode a ANSI .

Opzione 1

Qui aggiungo PIPES_AS_CONCAT al mio sql_mode :

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

È vero che avrei potuto semplicemente andare 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.

Opzione 2

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.

Controlla il tuo sql_mode

Puoi controllare il tuo sql_mode così:

SELECT @@sql_mode;

Risultato:

REAL_AS_FLOAT,PIPES_AS_CONCAT,ANSI_QUOTES,IGNORE_SPACE,ONLY_FULL_GROUP_BY,ANSI

Questo è il risultato che ottengo dopo essere passato a ANSI modalità. Possiamo vedere il PIPES_AS_CONCAT è incluso nell'elenco delle opzioni.

Esempio di concatenazione

Dopo aver impostato sql_mode usando una delle tecniche di cui sopra, ora possiamo usare || come operatore di concatenazione di pipe:

SELECT 'Homer' || 'Symptom';

Risultato:

HomerSymptom

Se non avessimo abilitato l'operatore di concatenazione delle pipe, molto probabilmente avremmo ottenuto un risultato imprevisto, con un avviso.