我想将一个参数传递给一个过程,该过程用于可能值为"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 中?
你能试一试吗,因为没有桌子我就无法测试它。
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')