는 다음과 같이 NULL로 변수를 비교하는 것은 불가능하다 :SQL에서 CASE WHEN NULL에 대한 특별한 처리가없는 이유는 무엇입니까? SQL에서
CASE x WHEN NULL THEN y ELSE z END
때문에 세 가지 값 SQL 로직, x = NULL
것이다 결코 true를 돌려줍니다. 하나는 대신이 작업을 수행 할 수 있습니다
CASE WHEN x IS NULL THEN y ELSE z END
x는 예를 들어, 데이터를 수정하는 절차의 결과 인 경우이 문제가 :
이CASE WHEN func(i) IS NULL THEN y
WHEN func(i) = 'a' THEN z
ELSE t
END
그래서 ... func(i)
두 번 평가됩니다은? CASE ... WHEN NULL
이 IS NULL
연산자를 사용하여 평가 된 표현식을 NULL
과 비교한다는 표준 요구 사항이없는 이유는 무엇입니까?
이러한 구조를 허용하는 DBMS가 있습니까?
func (i)의 결과를 보유하는 임시 변수를 도입하고 사례문에서 사용할 수 있습니까? –
'WHEN' 이후의 값이 단지 리터럴이라는 보장이 없으므로 더 많은 불일치가 발생하거나 NULL == NULL이되도록 SQL을 다시 작성하지 않고 특별한 경우에 대한 간단한 방법은 없습니다. 예 : 만약 표현식이'CASE func (i) WH1 Col1 THEN ... '이고'Col1'이 어떤 행에서는 null이지만 다른 행에서는 그렇지 않다면. –