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