sql >> Database teknologi >  >> RDS >> SQLite

Sådan fungerer SQLite Nullif()

SQLite nullif() funktion er en praktisk funktion, der giver dig mulighed for at behandle visse værdier som NULL, når det kræves.

Det må ikke forveksles med ifnull() funktion, som gør det modsatte – giver dig mulighed for at behandle NULL-værdier som noget andet.

nullif() funktion accepterer to argumenter og returnerer dets første argument, hvis argumenterne er forskellige, og NULL, hvis argumenterne er ens.

Syntaks

Syntaksen ser sådan ud:

nullif(X,Y)

Funktionen søger i sine argumenter fra venstre mod højre efter et argument, der definerer en sammenstillingsfunktion og bruger denne sammenstillingsfunktion til alle strengsammenligninger. Hvis ingen af ​​argumenterne definerer en sammenstillingsfunktion, bruges BINÆR.

Eksempel

Her er et grundlæggende eksempel at demonstrere.

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

Resultat:

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

I den første kolonne er de to værdier forskellige, så den første værdi returneres.

I den anden kolonne er begge værdier de samme, så NULL returneres.

Det samme gælder for den tredje kolonne – begge værdier er de samme, så NULL returneres.

Et praktisk eksempel

Her er et databaseeksempel, der viser en mere praktisk brug af nullif() funktion.

Tag følgende tabel kaldet Produkter :

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                

Vi kan se, at to produkter har en pris på nul. Et andet produkt har en NULL-pris.

Forestil dig nu, at vi vil finde ud af, hvor mange produkter der har en positiv pris. Med andre ord ønsker vi ikke at inkludere produkter, der har en pris eller nul (eller NULL for den sags skyld).

For at gøre dette kan vi bruge nullif() i forbindelse med count() funktion.

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

Resultat:

3

Vi får 3 som forventet, hvilket er præcis hvor mange rækker der har en positiv værdi i Pris kolonne.

Dette virker, fordi count() funktion tæller kun ikke-NULL værdier. Ved at konvertere nul-beløbene til NULL, er vi i stand til at ignorere disse værdier i vores beregning.

Her er den igen uden nullif() funktion.

SELECT count(Price) 
FROM Products;

Resultat:

5

Så i dette tilfælde inkluderer den nul-beløbene, og vi får 5. Den ignorerer stadig række 6, fordi den faktisk har en NULL-værdi.


  1. Sådan aktiveres komprimering på en eksisterende tabel i SQL Server (T-SQL)

  2. At finde lignende strenge med PostgreSQL hurtigt

  3. Design af en Microsoft T-SQL Trigger

  4. SQL Server VÆLG I @variabel?