T sql选择int值作为cast varchar

时间:2015-05-15 12:08:36

标签: sql-server stored-procedures

我存储了名为 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?

感谢。

1 个答案:

答案 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或更高版本,则可以使用表值类型进行此类工作。