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

Come funziona CONCAT() in MariaDB

In MariaDB, CONCAT() è una funzione di stringa incorporata che esegue una concatenazione di stringhe sui suoi argomenti. Restituisce la stringa che risulta dalla concatenazione dei suoi argomenti.

La concatenazione è l'operazione di unione di due o più stringhe end-to-end.

CONCAT() accetta uno o più argomenti, tutti restituiti come una singola stringa concatenata.

Sintassi

La sintassi è questa:

CONCAT( str1, str2, ... )

Dove str1, str2, … rappresentano gli argomenti stringa per i quali concatenare.

Esempio

Ecco un esempio di base:

SELECT CONCAT('Homer', 'Jay');

Risultato:

+------------------------+
| CONCAT('Homer', 'Jay') |
+------------------------+
| HomerJay               |
+------------------------+

In questo caso, abbiamo concatenato due stringhe.

Eccolo di nuovo, ma questa volta aggiungiamo uno spazio in mezzo:

SELECT CONCAT('Homer', ' ', 'Jay');

Risultato:

+-----------------------------+
| CONCAT('Homer', ' ', 'Jay') |
+-----------------------------+
| Homer Jay                   |
+-----------------------------+

In questo caso, abbiamo concatenato tre stringhe.

Eccolo con cinque:

SELECT CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson');

Risultato:

+---------------------------------------------+
| CONCAT('Homer', ' ', 'Jay', ' ', 'Simpson') |
+---------------------------------------------+
| Homer Jay Simpson                           |
+---------------------------------------------+

Stringhe binarie

Se uno qualsiasi degli argomenti è una stringa binaria, il risultato è una stringa binaria:

SELECT CONCAT(BINARY 'Homer', 'Jay');

Risultato:

+-------------------------------+
| CONCAT(BINARY 'Homer', 'Jay') |
+-------------------------------+
| HomerJay                      |
+-------------------------------+

Possiamo usare il COLLATION() funzione per controllare la collazione del risultato:

SELECT COLLATION(CONCAT(BINARY 'Homer', 'Jay'));

Risultato:

+------------------------------------------+
| COLLATION(CONCAT(BINARY 'Homer', 'Jay')) |
+------------------------------------------+
| binary                                   |
+------------------------------------------+

Se rimuoviamo il BINARY operatore, otteniamo un risultato diverso:

SELECT COLLATION(CONCAT('Homer', 'Jay'));

Risultato:

+-----------------------------------+
| COLLATION(CONCAT('Homer', 'Jay')) |
+-----------------------------------+
| utf8_general_ci                   |
+-----------------------------------+

Inoltre, secondo la documentazione di MariaDB, gli argomenti numerici vengono convertiti nella loro forma di stringa binaria equivalente. Puoi evitarlo eseguendo un cast di tipo esplicito (usando CAST() o CONVERT() ).

Argomenti nulli

Se uno qualsiasi degli argomenti è null , CONCAT() restituisce null .

Tuttavia, c'è un'eccezione:quando in modalità Oracle (cioè sql_mode=ORACLE ), qualsiasi null gli argomenti vengono semplicemente ignorati.

Per prima cosa, vediamo come CONCAT() si comporta in modalità predefinita.

Imposta la nostra sessione in modalità predefinita:

SET SESSION sql_mode=DEFAULT;

Ora esegui CONCAT() con un null argomento:

SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');

Risultato:

+--------------------------------------------+
| CONCAT('Homer', ' ', null, ' ', 'Simpson') |
+--------------------------------------------+
| NULL                                       |
+--------------------------------------------+

Come previsto, il risultato è null .

Ora passiamo alla nostra sessione in modalità Oracle:

SET SESSION sql_mode=ORACLE;

E ora eseguiamo il precedente CONCAT() esempio ancora:

SELECT CONCAT('Homer', ' ', null, ' ', 'Simpson');

Risultato:

+--------------------------------------------+
| CONCAT('Homer', ' ', null, ' ', 'Simpson') |
+--------------------------------------------+
| Homer  Simpson                             |
+--------------------------------------------+

Questa volta ha ignorato il null argomento e concatena tutti i restanti non null argomenti. Se guardi da vicino, vedrai che concatena entrambi gli spazi, quindi c'è un doppio spazio tra Homer e Simpson .

Per un null -alternativa sicura, usa CONCAT_WS() . Quella funzione ignora null valori, anche quando non in modalità Oracle.

In alternativa, puoi usare IFNULL() per fornire un valore (stringa) alternativo per null valori (come una stringa vuota).

Singolo argomento

Chiamando CONCAT() con un solo argomento restituisce semplicemente quell'argomento:

SELECT CONCAT('Homer');

Risultato:

+-----------------+
| CONCAT('Homer') |
+-----------------+
| Homer           |
+-----------------+

Argomento mancante

Chiamando CONCAT() senza passare alcun argomento genera un errore:

SELECT CONCAT();

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONCAT'