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

xiaosongaspnet 2013-09-12 01:56:32
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) )");

程序会自动加上'' 如何 不上它加上''
...全文
255 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rayaspnet 2013-09-13
  • 打赏
  • 举报
回复
引用 楼主 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
peng2739956 2013-09-13
  • 打赏
  • 举报
回复
顶5楼。。。。。。。。。。。。。
haibin_hu 2013-09-13
  • 打赏
  • 举报
回复
楼上的sql语句很好,对我很有帮助
Andy__Huang 2013-09-13
  • 打赏
  • 举报
回复
如果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语句
天空丶蒋 2013-09-12
  • 打赏
  • 举报
回复
楼主说的那个我没有学过,有点看不懂.. 不过我今天上课的时候讲过和这有点类似的,不知道能不能帮助你..我把代码给你看看吧。 本来是想用存储过程的,结果就有点像你第一行那段代码差不多的情况. 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' 这样便可以实现了,不知道对你有木有帮助.
全栈极简 2013-09-12
  • 打赏
  • 举报
回复
数字+, 拼串。不用字符串。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧