玖叶教程网

前端编程开发入门

为什么sql中有时不用like来实现模糊查询

为什么不使用like查询

我们都知道在sql中,实现模糊查询常常都是使用like,比如:select * from book_table where name like"%亲热天堂%" 。这样我们就查询出了name中含有“亲热天堂”的数据。但是,如果表中数据量庞大,这种查询的效率会很慢。因为如果like语句的条件中的“%”出现在第一个位置(比如:%热天堂,%亲热天堂%),这样会导致索引失效(查询时第一个关键字都不确定,当然会放弃使用索引。“亲热天%”第一个关键字可以确定就不会导致索引失效)。那么不使用“like”我们如何实现模糊查询呢?

用函数instr()来代替。

instr()函数可以输入两个参数。比如:instr(name,"abc"),意义为:判断name中是否包含字符串“abc”,如果不包含则返回0,如果包含则返回字符串“abc”在name中的位置

因此上文中的sql语句我们可以写成:select * from book_table where instr(name,"亲热天堂")>0(如果name中包含“亲热天堂”则返回“亲热天堂”在name中的位置,这个位置一定是“>0”的)

这样,我们就可以提高查询效率了。感兴趣的朋友可以实验一下。

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言