sql >> Databasteknik >  >> RDS >> SQLite

Hur SQLite Ifnull() fungerar

SQLite ifnull() funktionen låter dig ersätta NULL-värden med ett annat värde.

Den tar två argument och den returnerar en kopia av dess första icke-NULL-argument, eller NULL om båda argumenten är NULL.

ifnull() funktion är ekvivalent med coalesce() med två argument.

Enkelt exempel

Här är ett enkelt exempel för att demonstrera konceptet.

SELECT 
  ifnull(123, 0),
  ifnull(NULL, 0);

Resultat:

ifnull(123, 0)  ifnull(NULL, 0)
--------------  ---------------
123             0              

Den andra kolumnen var NULL och så 0 returnerades istället.

Databasexempel

Det här exemplet använder ifnull() i en databasfråga. Detta visar hur ifnull() kan vara användbart när du söker efter data som kan innehålla NULL-värden.

Ta följande tabell som ett exempel:

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                

De flesta produkter har fyllts i med priser, men priset på Gratis öl är NULL.

Vi kan ändra detta till ett värde som vi väljer.

SELECT 
  ProductName,
  ifnull(Price, 0.0)
FROM Products;

Resultat:

ProductName    ifnull(Price, 0.0)
-------------  ------------------
Widget Holder  139.5             
Widget Stick   89.75             
Foo Cap        11.99             
Free Widget    0.0               
Free Foobar    0.0               
Free Beer      0.0               

Nu har den samma pris som de andra gratisprodukterna.

Ersättningsvärdet behöver inte nödvändigtvis vara ett tal. Du kan också ersätta den med en sträng.

SELECT 
  ProductName,
  ifnull(Price, 'FREE!')
FROM Products;

Resultat:

ProductName    ifnull(Price, 'FREE!')
-------------  ----------------------
Widget Holder  139.5                 
Widget Stick   89.75                 
Foo Cap        11.99                 
Free Widget    0.0                   
Free Foobar    0.0                   
Free Beer      FREE!                 

När båda argumenten är NULL

Om båda argumenten är NULL, returneras NULL.

SELECT ifnull(NULL, NULL);

Resultat:

ifnull(NULL, NULL)
------------------
                  

  1. Hur använder man nyckelordet "som" för att alias en tabell i Oracle?

  2. Kan inte skapa enhetsdatamodell - med MySql och EF6

  3. Ställer du in främmande nycklar i phpMyAdmin?

  4. När ska man använda ärvda tabeller i PostgreSQL?