sql >> Databáze >  >> RDS >> Mysql

MySQL IFNULL() Vysvětleno

MySQL má IFNULL() funkce, která nám umožňuje snadno nahradit hodnoty NULL jinou hodnotou.

Syntaxe

IFNULL(expr1,expr2)

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

Příklad

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

SELECT IFNULL( null, 'n/a' );

Výsledek:

n/a

V tomto případě jsem použil IFNULL() k nahrazení hodnoty NULL řetězcem n/a .

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

SELECT IFNULL( 'Cow', 'n/a' );

Výsledek:

Cow

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
    PetName,
    DOB
FROM Pets;

Výsledek:

+---------+------------+
| PetName | DOB        |
+---------+------------+
| Fluffy  | 2020-11-20 |
| Fetch   | 2019-08-16 |
| Scratch | 2018-10-01 |
| Wag     | 2020-03-15 |
| Tweet   | 2020-11-28 |
| Fluffy  | 2020-09-17 |
| Bark    | NULL       |
| Meow    | NULL       |
| Woof    | 2020-10-03 |
| Ears    | 2022-01-11 |
+---------+------------+

Vidíme, že dva řádky mají ve sloupci DOB hodnoty NULL.

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

SELECT
    PetName,
    IFNULL( DOB, 'None supplied' )
FROM Pets;

Výsledek:

+---------+--------------------------------+
| PetName | IFNULL( DOB, 'None supplied' ) |
+---------+--------------------------------+
| Fluffy  | 2020-11-20                     |
| Fetch   | 2019-08-16                     |
| Scratch | 2018-10-01                     |
| Wag     | 2020-03-15                     |
| Tweet   | 2020-11-28                     |
| Fluffy  | 2020-09-17                     |
| Bark    | None supplied                  |
| Meow    | None supplied                  |
| Woof    | 2020-10-03                     |
| Ears    | 2022-01-11                     |
+---------+--------------------------------+

Výrazy

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

SELECT IFNULL( 2 * 5, 0 );

Dostáváme toto:

10

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

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

SELECT IFNULL( 2 / 0, 0 );

Dostáváme toto:

0.0000

Vyplatí se však být opatrný. Nula je hodnota. NULL není.

Ve výše uvedeném příkladu jsem vrátil nulu, když tam byla hodnota NULL, ale to by mohlo být zavádějící nebo dokonce úplně špatné. Představte si, že bychom rozdělili ceny a výsledkem by byla cena nula. Dobře, pokud dělíme cenu nulou, pravděpodobně je něco jiného špatně, ale jsem si jistý, že mi rozumíte.

V každém případě je obvykle lepší použít smysluplnější hodnotu, která čtenáři sděluje, že žádná hodnota neexistuje.

Příklad:

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

Výsledek:

No value

  1. Při provádění skriptu na SQLPlus vytiskne místo výstupu posloupnost čísel

  2. Jak předat data z aktivity do třídy Java

  3. SQL Server:Je možné vkládat do dvou tabulek současně?

  4. SQL Server Database Change Listener C#