解决 Select * from TableName where ID in (@ids) 问题
有这样一个问题:
在Sql Server 2005 中有学生表,结构如下
students(
id int ,
name varchar(100)
)
问题:查询出ID 等于 1,2,3,4,5 的学生
按照我的传统方法是,在类库中构造SQL语句,调用ADO.NET执行查询操作。这种方法是可以查询出所要的结构。但是之前的存储过程中也遇到过这样的问题。SQL语句如下,
declare @ids varchar(100)
set @ids='1,2,3,4,5';
select * from students where id in (@ids)
错误提示:在将''1,2,3,4,5'转换成数据类型 int 时 失败
后来在网上搜索,巧妙的运用charindex方法解决传递字符串的问题。
这里给出个解决方法。
declare @ids varchar(100)
set @ids='1,2,3,4,5';
select * from students where charindex(','+cast(id as varchar)+',' , ','+@ids+',')>0
这种方法的执行效率没有研究过。但是很巧妙的解决了这个问题。
charindex的使用 请看博文:http://www.cnblogs.com/yoolonet/archive/2010/11/25/1887868.html
 
                     
                    
                 
                    
                 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号