我必须为这种情况编写查询:Product
表&在UI方面,存在多个过滤条件,例如颜色,名称,产品编号,尺寸等,每个过滤器都有多选设施。使用可以选择此过滤器的任意组合,也不能选择过滤器。
如何为此方案编写SQL查询?
这就是我的尝试:
-- these variables contains comma delimited string of multiple values
declare @color varchar(max),
@pnumber varchar(max),
@name varchar(max),
@size varchar(max)
@searchFilter table
(
searchType varchar(max)
ID int,
value varchar(max)
)
-- I am parsing these filter values & putting in a table variable @searchFilter
Select *
from Product
where
(@color is null or Color in (select value from @searchFilter
where searchType = 'Color'))
and
(@name is null or Name in (select value from @searchFilter
where searchType = 'Name'))
and
(@size is null or Size in (select value from @searchFilter
where searchType = 'Size'))
and
(@pnumber is null or ProductNumber in (select value from @searchFilter
where searchType = 'PNumber'))
我收到错误
转换无法将值'xx'转换为数据类型int
答案 0 :(得分:1)
您的错误似乎是由于其中一个搜索字段(可能Size
或ProductNumber
)为int,而value
字段来自@searchFilter
表是varchar(MAX)。