sqlserver 多个条件的 LIKE语句

如果表的一个字段,如果有"你好" ,"你" ,"我们",则查询出来这句
---------------------------------
select  *
from tablex
where f1 like '%[你好|你|我们]%'

最常见的写法:where  a like '%xx%' or b like '%xx%' or c like '%xx%';  这种写法查询效率低,经过调查,下面的方法可以替代,并且效率高:

1、如果like的关键字相同:

where instr(nvl(a, '')||nvl(b,'')||nvl(c,''),   'xx') > 0

把要模糊查询的字段先拼接起来,拼接时需要把null转成‘’,否则只要有一个字段值是空,整个拼接的字符串都成空了, 然后用instr 函数去过滤;

2、如果like的关键字不同:

where instr(a, 'xx') > 0  or  instr(b, 'yy') > 0  or instr(c, 'zz') > 0 

经过测试,这两种方法都比like效率要高;

--------------------- 作者:Andy猪猪侠 来源:CSDN 原文:https://blog.csdn.net/zhujianpengzha/article/details/52711554?utm_source=copy 版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/mjb115889/article/details/82998344