sql >> Database >  >> RDS >> SQLite

Hoe SQLite Nullif() werkt

De SQLite nullif() functie is een handige functie waarmee u bepaalde waarden indien nodig als NULL kunt behandelen.

Het moet niet worden verward met de ifnull() functie, die het tegenovergestelde doet – stelt u in staat om NULL-waarden als iets anders te behandelen.

De nullif() functie accepteert twee argumenten en retourneert het eerste argument als de argumenten verschillend zijn en NULL als de argumenten hetzelfde zijn.

Syntaxis

De syntaxis gaat als volgt:

nullif(X,Y)

De functie doorzoekt zijn argumenten van links naar rechts naar een argument dat een sorteerfunctie definieert en gebruikt die sorteerfunctie voor alle tekenreeksvergelijkingen. Als geen van beide argumenten een sorteerfunctie definieert, wordt BINARY gebruikt.

Voorbeeld

Hier is een eenvoudig voorbeeld om te demonstreren.

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

Resultaat:

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

In de eerste kolom zijn de twee waarden verschillend, dus de eerste waarde wordt geretourneerd.

In de tweede kolom zijn beide waarden hetzelfde, dus NULL wordt geretourneerd.

Hetzelfde geldt voor de derde kolom – beide waarden zijn hetzelfde, dus NULL wordt geretourneerd.

Een praktisch voorbeeld

Hier is een databasevoorbeeld dat een meer praktisch gebruik voor de nullif() laat zien functie.

Neem de volgende tabel genaamd Producten :

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                

We kunnen zien dat twee producten een prijs van nul hebben. Een ander product heeft een NULL-prijs.

Stel je nu voor dat we willen weten hoeveel producten een positieve prijs hebben. Met andere woorden, we willen geen producten opnemen met een prijs of nul (of NULL wat dat betreft).

Om dit te doen, kunnen we nullif() . gebruiken in combinatie met de count() functie.

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

Resultaat:

3

We krijgen 3 zoals verwacht, wat precies is hoeveel rijen een positieve waarde hebben in de Prijs kolom.

Dit werkt omdat de count() functie telt alleen niet-NULL-waarden. Door de nulbedragen naar NULL te converteren, kunnen we die waarden in onze berekening negeren.

Hier is het weer zonder de nullif() functie.

SELECT count(Price) 
FROM Products;

Resultaat:

5

Dus in dit geval bevat het de nulbedragen en krijgen we 5. Het negeert rij 6 nog steeds omdat dat eigenlijk een NULL-waarde heeft.


  1. PostgreSQL-rechten en gebruikersbeheer - wat u moet weten

  2. Een database maken in Cloud Sites

  3. ID ophalen van laatst ingevoegde record in orakel db

  4. Hoe gebruik je scriptvariabelen in psql?