Select * From StoreWarehouse where   Cast(StoreID  as varchar(6))  in ('200000,200001,200002,200003,200004,200005')
(0 行受影响)   Select * From StoreWarehouse where   Cast(StoreID  as varchar(6))  in (200000,200001,200002,200003,200004,200005)
(2 行受影响)
storeids = storeids.Substring(2, storeids.Length - 3);
DBBase.AddParameter("@StoreIDS", storeids);sql.Append(" and A.WarehouseID in (Select WarehouseID From StoreWarehouse Where StoreID in (@StoreIDS) )");程序会自动加上''  如何 不上它加上''

解决方案 »

  1.   

    Refer this:http://www.cnblogs.com/insus/p/3286039.html
    http://www.cnblogs.com/insus/articles/1918003.html
      

  2.   

    楼主说的那个我没有学过,有点看不懂..
    不过我今天上课的时候讲过和这有点类似的,不知道能不能帮助你..我把代码给你看看吧。
    本来是想用存储过程的,结果就有点像你第一行那段代码差不多的情况.
    create proc proc_UpdateBooksCategoryId
    @id varchar(20),
    @CategoryId varchar(2000) 
    as
    declare @sql varchar(2000)
    set @sql=' update Books set CategoryId='+@CategoryId+' where id in('+@id+')'
    exec(@sql)执行 exec proc_UpdateBooksCategoryId 1,'4939,4940,4941,4942'
    这样便可以实现了,不知道对你有木有帮助.
      

  3.   

    给出的代码不全, 没有给出前半部分的sql
      

  4.   


    如果StoreID是int类型,经过下面语句转换后,
    Select * From StoreWarehouse 
    where   Cast(StoreID  as varchar(6))  in ('200000,200001,200002,200003,200004,200005')
    --这个语句相当于:Cast(StoreID  as varchar(6))等于括号字符串内容,所以返回行数为0行可以有三种方法,都可以达到正确结果:
    Select * From StoreWarehouse 
    where   Cast(StoreID  as varchar(6))  in ('200000','200001','200002','200003','200004','200005')
    或者
    Select * From StoreWarehouse 
    where   StoreID  in (200000,200001,200002,200003,200004,200005)
    或者
    Select * From StoreWarehouse 
    where charindex(','+Cast(StoreID as varchar)+',',',200000,200001,200002,200003,200004,200005,')>0
    -----注意这一句,字符串的前后都加了","
    你就按照这样的写法去拼sql语句
      

  5.   

    楼上的sql语句很好,对我很有帮助