sql与一个参数

时间:2017-07-11 19:01:38

标签: sql

我想将参数传递给用于具有可能值为“ALL”,“OTHER”或特定国家/地区缩写(如“HK”或“TW”)的国家/地区的过程。 “其他”应选择所有未明确列出的国家(在本例中为“HK”,“TW”)。

我目前唯一能想到的方法是使用IF / ELSE作为两个单独的查询。

IF (@i_Country = 'OTHER')
   SELECT * FROM table WHERE Country NOT IN ('HK', 'TW')
ELSE
   SELECT * FROM table WHERE Country LIKE
   CASE 
      WHEN @i_Country = 'ALL' THEN '%'
      ELSE @i_Country
   END

是否可以在不使用IF / ELSE的情况下将其整齐地放在一个查询的WHERE中?

1 个答案:

答案 0 :(得分:1)

你可以试一试,因为我不能在没有桌子的情况下进行测试。

SELECT * 
FROM [table] 
WHERE (@i_Country = 'OTHER' AND Country NOT IN ('HK', 'TW')) 
OR (@i_Country <> 'ALL' AND @i_Country <> 'OTHER' AND Country = @i_Country)
OR (@i_Country = 'ALL')