Sintassi
COALESCE(value,...)
Descrizione
Restituisce il primo valore non NULL nell’elenco, o NULL se ci sono valori non NULL. Almeno un parametro deve essere passato.
La funzione è utile quando si sostituisce un valore predefinito per valori null durante la visualizzazione dei dati.
Vedi anche Valori NULL in MariaDB.,
Esempi
SELECT COALESCE(NULL,1);+------------------+| COALESCE(NULL,1) |+------------------+| 1 |+------------------+
SELECT COALESCE(NULL,NULL,NULL);+--------------------------+| COALESCE(NULL,NULL,NULL) |+--------------------------+| NULL |+--------------------------+
Quando due sono argomenti, COALESCE() è la stessa IFNULL():
SET @a=NULL, @b=1;SELECT COALESCE(@a, @b), IFNULL(@a, @b);+------------------+----------------+| COALESCE(@a, @b) | IFNULL(@a, @b) |+------------------+----------------+| 1 | 1 |+------------------+----------------+
Hex tipo di confusione:
CREATE TABLE t1 (a INT, b VARCHAR(10));INSERT INTO t1 VALUES (0x31, 0x61),(COALESCE(0x31), COALESCE(0x61));SELECT * FROM t1;+------+------+| a | b |+------+------+| 49 | a || 1 | a |+------+------+
Il motivo per i diversi risultati di cui sopra è che quando 0x31 è inserito direttamente alla colonna, è trattato come un numero (vedi valori Letterali Esadecimali), mentre quando 0x31 è passato a COALESCE(), è trattato come una stringa, perché:
- i valori ESADECIMALI sono un tipo di dati stringa di default.
- COALESCE () ha lo stesso tipo di dati dell’argomento.,
Sostituendo zero per nulla (in questo caso la funzione di aggregazione restituisce NULL dopo la ricerca di n righe):
SELECT SUM(score) FROM student;+------------+| SUM(score) |+------------+| NULL |+------------+SELECT COALESCE(SUM(score),0) FROM student;+------------------------+| COALESCE(SUM(score),0) |+------------------------+| 0 |+------------------------+
Vedi anche
- i valori NULL
- operatore IS NULL
- NON È NULL operatore
- IFNULL funzione
- funzione NULLIF
- COLLEGARE i tipi di dati
Lascia un commento