charindex妙用

我们写程序的人都知道,sql注入很难防,保险的做法都是接受参数,而不是拼接字符串。

但在有的情况下,参数实现会变的更复杂。比如 select count(col1) from table1 where col1 in ( 'a','b')

这个in中的条件就是参数,可是sql中处理数组很麻烦啊,怎么办呢?

想到在做like优化的时候,使用过charindex,不知道这里能用不,于是拉不来试了试

exec sp_executesql
N'SELECT COUNT(ID)  FROM [Order ]
WHERE  Status = @condition AND  CHARINDEX('','' + NOMUBER + '','', @cstno + '','')>0',
N'@condition varchar(50),@cstno varchar(370)',
@condition='1',
@cstno=',,CDA016,CDA019,CDA020,CDA018,CDA028,CDA030,CDA037,CDA041,CDA042,CDA046,CDA050,CDA057,CJF,CJL,CDA001,CGW,
CDA012,CDA044,CNA012,CDA002,CDA003,CDA004,CDA005,CDA000,CDA006,CDA010,CDA008,CDA011,CDA015,CDA014,CDA017,CDA021,
CDA022,CDA023,CDA024,CDA025,CDA031,CDA033,CDA035,CDA032,CDA036,CDA038,CDA039,CDA040,CDA043,CDA045,CDA047,CDA048,
CDA054,CDA056,CDA034,CNA043,CDA013,CDA029,' 

结果正确。

请大家注意标红的语句,我在 NOMUBER 前后都加了一个",",如若不然会出现一些莫名其妙的错误。 如:我想查的nomuber=cda,不在前后加个逗号,那么@cstno都匹配了,所以大家用的时候一定要注意自己的这边字符串数组分隔符是什么。

 

转载于:https://www.cnblogs.com/leeyun/archive/2009/11/05/1596621.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值