比如需要这样的效果:select * from user where name like '%四%' or name like '%五%'可以使用 REGEXP 写成:select * from user where name regexp '四|五'References:https://www.runoob.com/mysql/mysql-regexp.html...
2、使用like模糊查询会导致索引失效,在数据量大的时候会有性能问题
(1)尽量少以%或者_开头进行模糊查询
通过explain执行计划,我们发现,使用like模糊查询时,如果不以%和_开头查询的话,索引还是有效的
以%或者_开头查询,索引失效
(2)使用覆盖索引
当查询的的条件和查询的结果都是索引中的
字段
的时候,这个索引我们可以称之为覆盖索引,这个时候,使用like模糊
一、SQL模式
SQL的模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零个字符)。在
MySQL
中,SQL的模式缺省是忽略大小写的。下面显示一些例子。注意在你使用SQL模式时,你不能使用=或!=;而使用LIKE或NOT LIKE比较操作符。
SELECT
字段
FROM 表 WHERE 某
字段
Like 条件
其中关于条件,SQL提供了四种匹配模式:
1,%:表示任意个或
多个
字符。可匹配任意类型和长度的字符。
比如 SELECT * FROM [user] WHERE u_name LIKE ‘%三%’
将会把u_name为“张三”,“张猫三”、“三脚猫”,“唐三藏”
最常见的写法:
where a like '%xx%' or b like '%xx%' or c like '%xx%'
这种写法查询效率低,经过调查,下面的方法可以替代,并且效率高:
2、如果like的关键字相同:
where instr(nvl(a, '')||nvl(b,'')||nvl(c,''), 'xx') > 0
把要模糊查询的字...
select * from zhy where code like 'H%' or code like 'M%',or code like '81%' or code like '82%';
方法二 使用正则表达式
select * from zhy where code REGEXP '^H|^M|^81|^82';
方法三 使用in
select * from zhy where left(cod
可以查出以下语句,但假如我们想找以下所有姓张的同学,这就需要用到like语句,like语句一般是和字符串的匹配类似。LIKE语句后面一般采用 %标示任意字符,比如下面这个语句就可以查出所有姓张的同学。
select * from st WHERE name like '张%';
百分号的位置代表匹配的其他字符的位置,如果写成%张,就会查出名字中第一个字
比如需要这样的效果:
SELECT project_name,pre_sale_number from estate_project_info WHERE loc_area='海淀区' AND (pre_sale_number like '%2016%' or pre_sale_number like '%2017%')
可以使用 REGEXP 写成:
SELECT project...