Các thao tác so sánh hợp lệ duy nhất với NULL
giá trị là IS NULL
hoặc IS NOT NULL
, những người khác luôn trả về false (thực tế - Không xác định, hãy xem nhận xét của @ Damien_The_Un Believer)
Vì vậy, hãy thử cách sau
CREATE TYPE [dbo].[BitType] AS TABLE(
[B] [tinyint] NOT NULL
)
GO
declare @theBitTypeTable BitType
insert @theBitTypeTable
VALUES(0), (2 /* instead of NULL*/)
SELECT something FROM theTable WHERE IsNull(cast(item as tinyint), 2) IN (select B from @theBitTypeTable)