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

Come funziona IFNULL() in MariaDB

In MariaDB, il IFNULL() la funzione ci consente di sostituire i valori NULL con un altro valore.

Sintassi

IFNULL(expr1,expr2)

Se expr1 non è NULL , IFNULL() restituisce expr1 ; altrimenti restituisce expr2 .

Inoltre, da MariaDB 10.3, NVL() può essere usato come alias per IFNULL() funzione. Pertanto, abbiamo invece la possibilità di utilizzare la seguente sintassi:

NVL(expr1,expr2)

Il risultato è lo stesso indipendentemente dalla sintassi utilizzata.

Esempio

Ecco un esempio di base che utilizza NULL costante:

SELECT IFNULL( null, 'No Value' );

Risultato:

No Value

In questo caso, ho usato IFNULL() per sostituire il valore NULL con No Value .

Ecco cosa succede quando il primo argomento non è NULL :

SELECT IFNULL( 'Spicy', 'No Value' );

Risultato:

Spicy

In questo caso, viene restituito il primo argomento, perché non è NULL .

Esempio di database

Supponiamo di eseguire la seguente query:

SELECT * FROM Employees;

Risultato:

empId	name	dept
-----   -----   -----
1	Jess	Sales
2	Rohit	NULL
3	Zohan	Sales
4	Homer	NULL

Possiamo vedere che due righe hanno valori NULL nel dept colonna.

Nella query seguente, utilizziamo IFNULL() per sostituire i valori NULL con un valore più significativo per il lettore:

SELECT
    empId,
    name,
    IFNULL( dept, 'Not yet assigned' ) AS dept
FROM Employees;

Risultato:

empId	name	dept
-----   -----   ----------------
1	Jess	Sales
2	Rohit	Not yet assigned
3	Zohan	Sales
4	Homer	Not yet assigned

Espressioni

Viene valutato il valore corrente del primo argomento. Pertanto, se forniamo un'espressione come la seguente:

SELECT IFNULL( 3 * 7, 0 );

Otteniamo questo:

21

Quindi, non otteniamo il 3 * 7 parte. Otteniamo il risultato di quell'espressione (che in questo caso è 21 ).

Lo stesso vale quando il risultato dell'espressione è NULL . Ad esempio, se eseguiamo il codice seguente:

SELECT IFNULL( 3 / 0, 0 );

Otteniamo questo:

0.0000

Tuttavia, questo è un esempio pericoloso. Zero è un valore. NULL non è.

Restituire zero quando c'è un valore NULL potrebbe essere fuorviante o addirittura completamente sbagliato. Immagina se avessimo a che fare con i prezzi. Potremmo finire con un prezzo pari a zero, che potrebbe non essere corretto e costare un sacco di soldi all'azienda.

Pertanto in questi casi di solito è meglio utilizzare un valore più significativo che comunichi al lettore che non esiste alcun valore.

Esempio:

SELECT IFNULL( 3 / 0, 'No value' );

Risultato:

No Value

Il NVL() Funzione

A partire da MariaDB 10.3, NVL() è un alias per IFNULL() . Pertanto, possiamo sostituire IFNULL() con NVL() in uno degli esempi precedenti.

Esempio:

SELECT NVL( 3 / 0, 'No value' );

Risultato:

No Value