2009-03-25 4 views
4

첫번째 테이크, kludge 솔루션, 감시 방법과 불평등 비교 (이 프로그램이 감시 값의 입력을 허용하지해야하는 것이 필수적이다) :SQL 평등/널 (NULL) 값

select coalesce(a, -2147483648) = coalesce(b, -2147483648) as is_equal -- a little postgresism 

의 당신이 센티널 값을 차단하는 것을 잊었다 가정 해 봅시다 프로그램에서 사용자는 B 필드에 -2147483648을 입력하고 A는 널입니다. 위의 코드는 true를보고하고 false를보고하고 true 또는 null을보고해서는 안됩니다.

nullable 필드에서 평등을 비교하는 가장 간단한 방법은 무엇입니까? A == B는 필드가 널 (NULL) 입력 가능 여부와 관계없이 true 또는 false만을보고해야합니다.

답변

0

운영자 < => 다른 데이터베이스 엔진에서 원하는 작업을 수행합니다. 포스트 그레스에 있지 않니? 그렇지 않으면 a is null and b is null or (a is not null and b is not null and a == b)가 작동합니다. FALSE AND NULLFALSE이기 때문에 효과가 있습니다.

+0

은 postgresql (또는 다른 rdbms)에서는 작동하지 않습니다. 그 연산자에 대한 행운의 mysql 놈들 : - 어쨌든, +1이 사건에 대한 어떤 mysqlers의 기회 – Hao

+0

적어도 오라클과 함께, 일반적인 연산자는 null 값으로 예상대로 작동하지 않습니다 ... – Thilo