当前位置:编程学习 > C#/ASP.NET >>

asp.net 遇到sql使用in 怎样处理??

   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) )");

程序会自动加上''  如何 不上它加上'' --------------------编程问答-------------------- Refer this:

http://www.cnblogs.com/insus/p/3286039.html
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'


这样便可以实现了,不知道对你有木有帮助. --------------------编程问答--------------------
引用 楼主 xiaosongaspnet 的回复:
   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) )");

程序会自动加上''  如何 不上它加上''

给出的代码不全, 没有给出前半部分的sql --------------------编程问答--------------------
如果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语句


--------------------编程问答-------------------- 楼上的sql语句很好,对我很有帮助 --------------------编程问答-------------------- 顶5楼。。。。。。。。。。。。。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,