MSSQL中LIKE的1,11,111问题[原创]

来源:互联网 发布:装备制造业数据 编辑:程序博客网 时间:2024/05/16 08:19

相信大家都用过LIKE语句,那么大家都是怎么用的呢?

看下我下面的例子:

select * from tablename where colname like '%1%'

这样的语句是不是常用呢?

大家先看看这里会出现什么问题呢?

往下看:

这里就存在我说的1,11,111的问题,其实,1,11,111只是个代表名,也可以叫2,22,222问题,问题的原理是这样的:

比如上面的语句中,如果colname的值为“1,2,3”,那么应该会返回你期望的结果。

 

那么,如果colname的值为“2,11,111”时,你想想上面的语句会得到什么呢?

是不是也会匹配出来,这个就是我要说的1,11,111问题。

 

既然问题来了,那怎么解决呢?

可以用分割符来解决的,这个要求,在形成2,11,111这个串的时候就要加处理,应该是下面这样:“|2|,|11|,|111|”,不要问我这个怎么加哈,当然了,这个“|”是可以随意更换的,看要保持一个原则,就是这个分割符不常用,否则就没有意义了。

那么这样的话呢,数据库里就存了这些信息了,那检索查询时怎么写呢?

可以这样来写:

select * from tablename where colname like '%|1|%'

如果是其他情况,请变换成上面的样子就可以了。

这样就完全解决1,11,111的问题了。

 

顺便说一下,LIKE时,一定记住,是多LIKE少。

 

感谢大家看完,有不当之处,请跟贴指出,谢谢。