以下參數類似於(2,3,4,5)或(2),或者甚至爲NULL,ServiceEntryPart列可能具有如下代碼部分中的數據。我的問題是什麼將是正確的語法,所以我可以使用過濾器。如果過濾器是NULL,我會完全忽略它。我至今工作正常,如果它是一個NULL(不包括過濾器),但是當我有例如(1,2)帕拉姆,這是行不通的..謝謝SQL如何在使用ISNULL時使用IN
ServiceEntryPart.ServiceTypeIDs
4,3
3
NULL
1
8
2,5
--Filter:
@ServiceTypes nvarchar(100) = NULL
--Filter with values SET @ServiceTypes = (1,2,4,5)
--Where Clause
WHERE (ServiceEntryPart.ServiceTypeIDs = ISNULL(@ServiceTypes,ServiceEntryPart.ServiceTypeIDs)
無論是否帶有ISNULL,您都無法將整個IN列表作爲單個命名參數傳遞給查詢。 – dasblinkenlight 2012-07-17 19:30:15
那麼你說的解決方案是什麼? – user1475788 2012-07-17 19:30:39
你需要定義你想要的行爲。如果參數是@ServiceTypes爲null,您是否想要a)忽略該參數或者b)僅拾取空值?打破1NF也不是好主意。 – 2012-07-17 19:31:12