sql >> Databáze >  >> RDS >> MariaDB

Jak NVL() funguje v MariaDB

Od MariaDB 10.3, NVL() lze použít jako alias pro IFNULL() funkce. Obě funkce nám tedy umožňují nahradit hodnoty NULL jinou hodnotou.

Syntaxe

NVL(expr1,expr2)

Pokud expr1 není NULL , NVL() vrátí expr1 ; jinak vrátí expr2 .

Je dáno NVL() je alias pro IFNULL() , můžeme také použít následující syntaxi:

IFNULL(expr1,expr2)

Obě výše uvedené syntaxe vrátí stejný výsledek.

Příklad

Zde je základní příklad, který používá NULL konstantní:

SELECT NVL( null, 'No Value' );

Výsledek:

No Value

V tomto případě jsem použil NVL() k nahrazení hodnoty NULL No Value .

Co se stane, když první argument není NULL :

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

Výsledek:

Green

V tomto případě je vrácen první argument, protože není NULL .

Příklad databáze

Předpokládejme, že spustíme následující dotaz:

SELECT * FROM Employees;

Výsledek:

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

Vidíme, že dva řádky mají v dept hodnoty NULL sloupec.

V následujícím dotazu používáme NVL() Chcete-li nahradit hodnoty NULL smysluplnější hodnotou pro čtenáře:

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

Výsledek:

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

Výrazy

Vyhodnocuje se aktuální hodnota prvního argumentu. Pokud tedy poskytneme výraz, jako je tento:

SELECT NVL( 4 * 10, 0 );

Dostáváme toto:

40

Nedostaneme tedy 4 * 10 část. Dostaneme výsledek tohoto výrazu (což je v tomto případě 40 ).

Totéž platí, když je výsledkem výrazu NULL :

SELECT NVL( 4 / 0, 0 );

Výsledek:

0.0000

Toto je však nebezpečný příklad. Nula je hodnota. NULL není.

Vrácení nuly, když existuje hodnota NULL, může být zavádějící nebo dokonce úplně špatné. Představte si, že bychom řešili ceny. Mohli bychom skončit s cenou nula, což by mohlo být nesprávné a stát by to firmu hodně peněz.

V takových případech je obvykle lepší použít smysluplnější hodnotu, která čtenáři sděluje, že neexistuje žádná hodnota.

Příklad:

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

Výsledek:

No Value

IFNULL() Funkce

Jak již bylo zmíněno, NVL() je alias pro IFNULL() . Proto můžeme nahradit NVL() pomocí IFNULL() v kterémkoli z výše uvedených příkladů.

Příklad:

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

Výsledek:

No Value

  1. Jak funguje iif() v SQLite

  2. Řetězec k datu v Oracle s milisekundami

  3. Jak importovat databázi pomocí příkazového řádku

  4. Kurz SQL:Jednorázové řešení, jak se naučit SQL