I SQLite, om du behöver ersätta NULL-resultat med text som "N/A", "None" eller till och med texten "NULL", kan du använda en av de tre lösningarna nedan.
Exempeldata
Först, här är ett exempel på en fråga som returnerar några NULL-värden.
SELECT
CustomerId,
Fax
FROM Customer
LIMIT 5;
Resultat:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 3 4 5 +420 2 4172 5
Observera att raderna 2, 3 och 4 innehåller NULL-värden i Fax kolumn.
Vi kan använda metoderna nedan för att ändra resultatet så att NULL-kolumnerna visar "N/A".
Funktionen ifnull()
ifnull()
funktion accepterar två argument och returnerar det första som inte är NULL. Om båda argumenten är NULL, returnerar det NULL.
Så det första argumentet bör vara värdet som kan vara nullbart eller inte, och det andra argumentet bör vara värdet som du vill ersätta eventuella NULL-värden med.
Så här kan vi ändra den tidigare frågan så att den visar "N/A" varhelst Fax kolumnen är NULL.
SELECT
CustomerId,
ifnull(Fax, 'N/A') AS Fax
FROM Customer
LIMIT 5;
Resultat:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 N/A 3 N/A 4 N/A 5 +420 2 4172 5
Koalesce()-funktionen
coalesce()
funktionen är mycket lik ifnull()
fungera. Skillnaden är att coalesce()
accepterar mer än två argument. Det returnerar helt enkelt det första icke-NULL-argumentet.
Därför kan vi använda det på exakt samma sätt som vi använder ifnull()
genom att tillhandahålla två argument.
SELECT
CustomerId,
coalesce(Fax, 'N/A') AS Fax
FROM Customer
LIMIT 5;
Resultat:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 N/A 3 N/A 4 N/A 5 +420 2 4172 5
.nullvalue Dot-kommandot
När du använder SQLites kommandoradsgränssnitt kan du använda .nullvalue
dot-kommando för att rädda dig själv från att behöva använda någon av de tidigare funktionerna varje gång du gör en fråga.
När du använder det här kommandot anger du en sträng som kommer att användas för att ersätta NULL-värden.
Exempel:
.nullvalue N/A
Nu, när du kör en fråga som returnerar NULL-värden, kommer strängen "N/A" att ersätta dessa NULL-värden.
SELECT
CustomerId,
Fax
FROM Customer
LIMIT 5;
Resultat:
CustomerId Fax ---------- ------------- 1 +55 (12) 3923 2 N/A 3 N/A 4 N/A 5 +420 2 4172 5