Chỉ cần một chút adjustement Fors những người đến sau:
Nhà điều hành bình đẳng tạo ra một giá trị unknow khi có một null và giá trị chưa biết được điều trị một sai lầm. Không (không xác định) là không rõ
Trong ví dụ bên dưới, tôi sẽ cố gắng nói nếu một cặp vợ chồng (a1, b1) bằng (a2, b2). Lưu ý rằng mỗi cột có 3 giá trị 0, 1 và NULL.
DECLARE @t table (a1 bit, a2 bit, b1 bit, b2 bit)
Insert into @t (a1 , a2, b1, b2)
values(0 , 0 , 0 , NULL)
select
a1,a2,b1,b2,
case when (
(a1=a2 or (a1 is null and a2 is null))
and (b1=b2 or (b1 is null and b2 is null))
)
then
'Equal'
end,
case when not (
(a1=a2 or (a1 is null and a2 is null))
and (b1=b2 or (b1 is null and b2 is null))
)
then
'not Equal'
end,
case when (
(a1<>a2 or (a1 is null and a2 is not null) or (a1 is not null and a2 is null))
or (b1<>b2 or (b1 is null and b2 is not null) or (b1 is not null and b2 is null))
)
then
'Different'
end
from @t
Lưu ý rằng ở đây chúng tôi mong đợi kết quả:
- Bằng được null
- không bằng được không bằng
- khác nhau là khác nhau
nhưng chúng tôi nhận một kết quả khác
- Bằng không là OK
- Không bằng null ???
- khác nhau là khác nhau
Nguồn
2010-05-20 15:25:54
Xem thêm: http://stackoverflow.com/questions/723195/should-i-use-or-for-not-equal-in-tsql – Dinah