我想在案例中的tsql中做一個select語句。首先是基於SearchField的內容。接下來我需要基於SearchOper來完成它。案例中的TSql案例
declare @searchField varchar(50)
declare @searchString varchar(50)
declare @searchOper varchar(50)
case @searchField
when 'CompanyName' then
case @searchOper
when 'eq' then
select * from tbl1 where CompanyName = @searchString
when 'ne' then
select * from tbl1 where CompanyName <> @searchString
end
when 'StoreNum' then
case @searchOper
when 'eq' then
select * from tbl1 where StoreNum = @searchString
when 'ne' then
select * from tbl1 where StoreNum <> @searchString
end
end
注意我想要做的是在case語句中做一個選擇。
我收到一條消息,指出關鍵字'case'附近的語法不正確。
謝謝。你確定沒有辦法使用CASE。我也考慮過IF,但CASE會更優雅 –
當跨越條件使用同一張表時(比如在你的例子中),你真的想用內聯的方式(所以你只需要一次),優化的和更易讀的 - 類似於RichardTheKiwi下面描述的例子(但注意缺失括號)。這種方法會更直接/標準。 – Ilya
要繼續:CASE對於使用列是非常有用的,並且可以通過順序,連接以及在哪裏進行復雜的決策......當然,CASE也可以在這裏以多種不同的方式工作(但是,可讀性差,且優化程度低很多,所以建議不要這樣): 'select * from tbl1 where(CASE WHEN @ searchField ='CompanyName'THEN CASE WHEN @searchOper ='eq'AND CompanyName = @searchString THEN 1 WHEN @ searchOper ='ne'AND CompanyName <> @searchString THEN 1 ELSE 0 END ELSE 0 END)= 1' – Ilya