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 中?

你能试一试吗,因为没有桌子我就无法测试它。

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')

最新更新