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

Jak funguje IFNULL() v MariaDB

V MariaDB, IFNULL() Funkce nám umožňuje nahradit hodnoty NULL jinou hodnotou.

Syntaxe

IFNULL(expr1,expr2)

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

Také z MariaDB 10.3, NVL() lze použít jako alias pro IFNULL() funkce. Proto máme možnost místo toho použít následující syntaxi:

NVL(expr1,expr2)

Výsledek je stejný bez ohledu na použitou syntaxi.

Příklad

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

SELECT IFNULL( null, 'No Value' );

Výsledek:

No Value

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

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

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

Výsledek:

Spicy

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 IFNULL() Chcete-li nahradit hodnoty NULL smysluplnější hodnotou pro čtenáře:

SELECT
    empId,
    name,
    IFNULL( 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 IFNULL( 3 * 7, 0 );

Dostáváme toto:

21

Nedostáváme tedy 3 * 7 část. Dostaneme výsledek tohoto výrazu (což je v tomto případě 21 ).

Totéž platí, když je výsledkem výrazu NULL . Pokud například spustíme následující kód:

SELECT IFNULL( 3 / 0, 0 );

Dostáváme toto:

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.

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

Příklad:

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

Výsledek:

No Value

NVL() Funkce

Počínaje MariaDB 10.3, NVL() je alias pro IFNULL() . Proto můžeme nahradit IFNULL() pomocí NVL() v kterémkoli z výše uvedených příkladů.

Příklad:

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

Výsledek:

No Value

  1. Spouštějí se uložené procedury v databázové transakci v Postgresu?

  2. Mapujte bodové pole geometrie PostGIS pomocí Hibernate na Spring Boot

  3. Jaké jsou režie používání AUTOINCREMENT pro SQLite na Androidu?

  4. DBaaS, cloud a transparentní směrování dotazů