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) )");程序会自动加上'' 如何 不上它加上''
(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) )");程序会自动加上'' 如何 不上它加上''
http://www.cnblogs.com/insus/articles/1918003.html
不过我今天上课的时候讲过和这有点类似的,不知道能不能帮助你..我把代码给你看看吧。
本来是想用存储过程的,结果就有点像你第一行那段代码差不多的情况.
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'
这样便可以实现了,不知道对你有木有帮助.
如果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语句