sql >> Databáze >  >> RDS >> SQLite

Jak funguje SQLite Nullif()

SQLite nullif() funkce je užitečná funkce, která vám v případě potřeby umožňuje považovat určité hodnoty za NULL.

Nesmí se zaměňovat s ifnull() funkce, která dělá opak – umožňuje zacházet s hodnotami NULL jako s něčím jiným.

nullif() funkce přijímá dva argumenty a vrací svůj první argument, pokud jsou argumenty různé, a NULL, pokud jsou argumenty stejné.

Syntaxe

Syntaxe vypadá takto:

nullif(X,Y)

Funkce hledá ve svých argumentech zleva doprava argument, který definuje porovnávací funkci a používá tuto porovnávací funkci pro všechna porovnávání řetězců. Pokud ani jeden argument nedefinuje porovnávací funkci, použije se BINARY.

Příklad

Zde je základní příklad k demonstraci.

SELECT 
  nullif(123,0),
  nullif(0,0),
  nullif(123,123);

Výsledek:

nullif(123,0)  nullif(0,0)  nullif(123,123)
-------------  -----------  ---------------
123                                        

V prvním sloupci se dvě hodnoty liší, takže je vrácena první hodnota.

Ve druhém sloupci jsou obě hodnoty stejné, takže je vráceno NULL.

Totéž platí pro třetí sloupec – obě hodnoty jsou stejné, takže je vráceno NULL.

Praktický příklad

Zde je příklad databáze, který demonstruje praktičtější použití nullif() funkce.

Vezměte si následující tabulku s názvem Produkty :

ProductId   ProductName    Price     
----------  -------------  ----------
1           Widget Holder  139.5     
2           Widget Stick   89.75     
3           Foo Cap        11.99     
4           Free Widget    0.0       
5           Free Foobar    0.0       
6           Free Beer                

Vidíme, že dva produkty mají cenu nula. Jiný produkt má cenu NULL.

Nyní si představte, že chceme zjistit, kolik produktů má kladnou cenu. Jinými slovy, nechceme zahrnout produkty, které mají cenu nebo nulu (nebo v tomto případě NULL).

K tomu můžeme použít nullif() ve spojení s count() funkce.

SELECT count(nullif(Price, 0.00)) 
FROM Products;

Výsledek:

3

Dostaneme 3 podle očekávání, což je přesně to, kolik řádků má kladnou hodnotu v ceně sloupec.

To funguje, protože count() funkce počítá pouze hodnoty jiné než NULL. Převedením nulových částek na NULL jsme schopni tyto hodnoty v našem výpočtu ignorovat.

Zde je opět bez nullif() funkce.

SELECT count(Price) 
FROM Products;

Výsledek:

5

Takže v tomto případě zahrnuje nulové částky a dostaneme 5. Stále ignoruje řádek 6, protože ve skutečnosti má hodnotu NULL.


  1. Jaký je průměrný plat vývojáře SQL?

  2. Co jsou spouštěče v SQL a jak je implementovat?

  3. Funkce SIGN() v Oracle

  4. Jak nainstalovat PostgreSQL 12 na Fedoru 33