相信大家都用过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少。
感谢大家看完,有不当之处,请跟贴指出,谢谢。