我存储了名为 GetReport
的程序www.domain.com/my.php?post1=hey&post2=ho&post3=letsgo
但是@Branches参数是varchar
@Branches是" 10,13534,554,776,767"
我想在branches_ID中搜索10,13534,554,776,767但是如果我转换/转换为varchar则不适合我。
customers.branches_ID is int type
如何解决这个问题如何在int列中搜索多个逗号varcvhar?
感谢。
答案 0 :(得分:1)
至少有4种方法可供选择。这是一个:
select * from customers where
customers.CreatedDate between @fromDate and @toDate and
(@Branches is null or branches_ID
IN(
SELECT y.i.value('(./text())[1]', 'nvarchar(4000)')
FROM ( SELECT x = CONVERT(XML, '<i>' + REPLACE(@Branches, ',', '</i><i>')
+ '</i>').query('.')
) AS a
CROSS APPLY x.nodes('i') AS y ( i )))
在这里寻找其他方法http://blogs.msdn.com/b/amitjet/archive/2009/12/11/sql-server-comma-separated-string-to-table.aspx
但是,如果使用Sql Server 2008或更高版本,则可以使用表值类型进行此类工作。