我有一個需要篩選記錄其中:TSQL:NULL的「IN」的條款
NotificationRead = 0 || NULL --> IF GetRead = 0
NotificationRead = 1 --> IF GetRead = 1
NotificationRead = 0 || 1 || NULL --> IF GetRead = NULL
這裏是我使用這個查詢:
DECLARE @GetRead BIT
DECLARE @Query VARCHAR(20)
SET @GetRead = NULL
IF @GetRead = 0 SET @Query = '0,NULL'
ELSE IF @GetRead = 1 SET @Query = '1'
ELSE SET @Query = '0,1,NULL'
SELECT * FROM vwNotifications WHERE NotificationRead IN (@Query)
上面的查詢基本上失敗當我在IN
條款中提供NULL
時。 我知道爲什麼感謝this question。
但是,如果我採取的方法爲這個問題的答案建議(使用NotificationRead IN (@Query) OR NotificationRead IS NULL
),我得到那裏NotificationRead = NULL
時,我不需要他們,例如所有記錄,當@GetRead = 1
能否請您指出我的正確的方向嗎?
你不能在'IN' CLASE使用'NULL'因爲'NULL's不能用的'SQL Server'上下文中的其他值/變量進行比較。例如,以下語句將不返回任何內容:'SELECT * FROM [dbo]。[TEST] WHERE [TestColumn] IN(NULL)' – gotqn