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 tuosql_mode
- Imposta
sql_mode
aANSI
.
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.