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_CONCATal tuosql_mode - Imposta
sql_modeaANSI.
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.