sqlite isnull (), nvl (), ifnull () 또는 coalesce ()에 해당합니다.
문제
내 코드에서 다음과 같은 많은 수표를 피하고 싶습니다.
myObj.someStringField = rdr.IsDBNull(someOrdinal)
? string.Empty
: rdr.GetString(someOrdinal);
나는 다음과 같은 일을함으로써 내 쿼리가 널을 돌볼 수 있다고 생각했습니다.
SELECT myField1, [isnull](myField1, '')
FROM myTable1
WHERE myField1 = someCondition
나는 sqlite를 사용하고 있고 그것을 인식하지 않는 것 같습니다. isnull
기능. 또한 다른 데이터베이스에서 인식 된 동등한 것들도 시도했습니다 (NVL()
, IFNULL()
그리고 COALESCE()
), 그러나 sqlite는 그들 중 어느 것도 인식하지 못하는 것 같습니다.
누구 든지이 작업을 수행하는 더 좋은 방법을 알고 있거나 알고 있습니까? 불행히도 데이터베이스에는 모든 필드에 대한 기본값이 없습니다. 게다가, 나는 몇 가지를 사용해야합니다 LEFT JOIN
어떤 경우에는 조항이 있으면 일부 필드가 반환되는 일부 필드가 Null이 될 것입니다. LEFT JOIN
테이블은 존재하지 않습니다.
해결책
IFNULL
, 여기를 봐: http://www.sqlite.org/lang_corefunc.html#ifnull
기능 주위에 괄호가 없습니다
다른 팁
이 시도
ifnull(X,Y)
예를 들어
select ifnull(InfoDetail,'') InfoDetail; -- this will replace null with ''
select ifnull(NULL,'THIS IS NULL');-- More clearly....
그만큼 ifnull()
함수는 첫 번째 비 널 인수의 사본을 반환하거나 두 인수가 모두 무효 인 경우 NULL을 반환합니다. Ifnull()
정확히 2 개의 인수가 있어야합니다. 그만큼 ifnull()
함수는 동일합니다 coalesce()
두 가지 주장이 있습니다.
없는 경우 ISNULL()
방법, 대신이 표현식을 사용할 수 있습니다.
CASE WHEN fieldname IS NULL THEN 0 ELSE fieldname END
이것은 동일하게 작동합니다 ISNULL(fieldname, 0)
.
사용 IS NULL
또는 IS NOT NULL
isnull () 메소드 대신에 클라스에서 :
SELECT myField1
FROM myTable1
WHERE myField1 IS NOT NULL
NVL () 및 ISNULL () 사용에 해당하는 경우 :
IFNULL(column, altValue)
column
: 평가중인 열.
altValue
: '열'이 null이면 반환하려는 값.
예시:
SELECT IFNULL(middle_name, 'N/A') FROM person;
*참고 : Coalesce () 함수는 다른 데이터베이스와 동일하게 작동합니다.
출처 :
- Coalesce () 함수 (W3Schools)
- sqlite에 의해 이해되는 SQL (SQLITE 웹 사이트)
그러한 기능을 쉽게 정의하고 사용할 수 있습니다.
ifnull <- function(x,y) {
if(is.na(x)==TRUE)
return (y)
else
return (x);
}
또는 동일한 조정 된 버전 :
ifnull <- function(x,y) {if(is.na(x)==TRUE) return (y) else return (x);}