문제

내 코드에서 다음과 같은 많은 수표를 피하고 싶습니다.

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 () 함수는 다른 데이터베이스와 동일하게 작동합니다.

출처 :

그러한 기능을 쉽게 정의하고 사용할 수 있습니다.

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);}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top