我想将参数传递给用于具有可能值为“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中?
答案 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')