我有一个过滤器下拉列表,其中有以下选项:
1、2、3、4、5,其他
当用户选择一个选项时,我将运行一个简单的SQL查询以按该值过滤数据,例如:
SELECT * FROM Product WHERE Code = @Code
唯一的问题是,当选择“其他”选项时,我需要显示所有没有1,2,3,4或5的代码。
数据如下:
Id: 1, Name: Product 1, Code: 1
Id: 2, Name: Product 2, Code: 2
Id: 3, Name: Product 3, Code: null
Id: 4, Name: Product 4, Code: 3
Id: 5, Name: Product 5, Code: 12
如果用户选择其他,我只需要显示:产品3和产品5
答案 0 :(得分:2)
一个简单的OR
条件就可以做到
SELECT *
FROM Product
WHERE (Code = @Code) OR (@Code = 'Other' and Code not in (1,2,3,4,5))
答案 1 :(得分:0)
这是您想要的吗?
SELECT *
FROM Product
WHERE (Code = @Code AND @Code IN ('1', '2', '3', '4', '5')) OR
(Code NOT IN ('1', '2', '3', '4', '5') AND @Code = 'Other')
如果Code
是整数,则以上可能返回类型转换错误。在这种情况下,我建议:
WHERE Code = TRY_CONVERT(INT, @Code) OR
(Code NOT IN (1, 2, 3, 4, 5) AND @Code = 'Other')