Chciałbym uniknąć wielu sprawdzeń, takich jak następujący w moim kodzie:
myObj.someStringField = rdr.IsDBNull(someOrdinal)
? string.Empty
: rdr.GetString(someOrdinal);
Pomyślałem, że mogę po prostu poprosić o zajęcie się wartościami zerowymi, robiąc coś takiego:
SELECT myField1, [isnull](myField1, '')
FROM myTable1
WHERE myField1 = someCondition
Jednak używam SQLite i wydaje się, że nie rozpoznaje isnull
funkcji. Próbowałem zostały również niektóre równoważne te ujmuje się w innych bazach danych ( NVL()
, IFNULL()
i COALESCE()
), ale SQLite nie wydają się rozpoznać żadnego z nich.
Czy ktoś ma jakieś sugestie lub zna lepszy sposób na zrobienie tego. Niestety baza danych nie ma wartości domyślnych dla wszystkich pól. Ponadto muszę użyć niektórych LEFT JOIN
klauzul w niektórych przypadkach, w których niektóre zwrócone pola będą miały wartość null, ponieważ pasujący rekord w LEFT JOIN
tabeli nie będzie istniał.
Spróbuj tego
na przykład
select ifnull(InfoDetail,'') InfoDetail; -- this will replace null with '' select ifnull(NULL,'THIS IS NULL');-- More clearly....
Plik
ifnull()
Zwraca kopię swojego pierwszego argumentu non-NULL lub null, jeśli oba argumenty są NULL.Ifnull()
musi mieć dokładnie 2 argumenty.ifnull()
Funkcja jest równoważnacoalesce()
z dwoma argumentami.źródło
ifnull
chciałem ... Po prostu musiałem upuścić nawiasy kwadratowe, których używałem.Jeśli nie ma
ISNULL()
metody, możesz użyć tego wyrażenia:CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END
Działa to tak samo jak
ISNULL(fieldname, 0)
.źródło
ifnull
jest odpowiednikiem SQLiteisnull
funkcji, o którą pytano. Każdy, kto czyta to teraz, powinien zapoznać się z odpowiedzią SQLMenace (sprzed ponad półtora roku wcześniej) przed napisaniem własnego rozwiązania przy użyciuCASE
.CASE
stwierdzenia może mieć więcej sensu niżIFNULL
.isnull
w innych systemach i nie chciałbym zachęcać ludzi do „rozwijania własnych”.Użyj
IS NULL
lubIS NOT NULL
w klauzuli WHERE zamiast metody ISNULL ():SELECT myField1 FROM myTable1 WHERE myField1 IS NOT NULL
źródło
myField1
ma wartość różną od null, chce zastąpić wartość w kolumnie wynikowej inną, jeśli wartość wiersza jest równa null.Dla odpowiednika NVL () i ISNULL () użyj:
IFNULL(column, altValue)
column
: Kolumna, którą oceniasz.altValue
: Wartość, którą chcesz zwrócić, jeśli wartość „kolumna” ma wartość null.Przykład:
SELECT IFNULL(middle_name, 'N/A') FROM person;
* Uwaga: Funkcja COALESCE () działa tak samo, jak w przypadku innych baz danych.
Źródła:
źródło
Możesz łatwo zdefiniować taką funkcję i użyć jej:
lub ta sama zminimalizowana wersja:
źródło