以下SQL查詢返回結果。CASE語句不適用於「IN」
declare @flag bit = 0
select *
from file_table fd
where fd.person_id = case @flag
when 0 then 10349196
else fd.person_id
end
但我想要更改上面的查詢,以包括兩個person_ids如下。
declare @flag bit = 0
declare @person_ids varchar(100) = '(1001,1002)'
select *
from file_table fd
where fd.person_id in case @flag
when 0 then @person_ids
else fd.person_id
end
但此查詢拋出錯誤
附近關鍵字 '情況' 的語法不正確
誰能幫我解決這個問題?我的意圖是,我想在case語句中包含兩個人員ID(如第二個查詢所示)。
給出的答案基本上是你周圍的語法錯誤是如何得到的,但你仍然有因爲SQL不會分析變量中的文本......所以如果你想用非靜態值做這樣的事情,你需要使用動態SQL。另外,使用兩個單獨的變量,並有'IN(@ var1,@ var2)' – ZLK
這將避免語法錯誤。但是不會返回任何結果集,儘管表中有這兩個人員ID的條目。任何想法爲什麼? – user3742125
案例表達式,不是case語句。 (因爲它返回一個值!!!) – jarlh