mysql查询语句中like 的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql查询语句中like 的用法相关的知识,希望对你有一定的参考价值。

我的语句是这样:select * from haoma where tel like 137#
为什么一个以137开头的数字记录都查询不出来?

1、常见用法:

(1)搭配%使用

%代表一个或多个字符的通配符,譬如查询字段name中以大开头的数据:

(2)搭配_使用

_代表仅仅一个字符的通配符,把上面那条查询语句中的%改为_,会发现只能查询出一条数据。

2、使用like模糊查询会导致索引失效,在数据量大的时候会有性能问题

(1)尽量少以%或者_开头进行模糊查询

通过explain执行计划,我们发现,使用like模糊查询时,如果不以%和_开头查询的话,索引还是有效的。

(2)使用覆盖索引

当查询的的条件和查询的结果都是索引中的字段的时候,这个索引我们可以称之为覆盖索引,这个时候,使用like模糊查询索引是有效的。

InnoDB中主键可以不添加进索引中

注意:使用覆盖索引,对于字段的长度是由要求限制的,一般超过长度,索引也会失效

这里如果查询中带有descripition字段,则覆盖索引也会失效。

扩展资料

like语句的语法格式是:select * from 表名 where 字段名 like 对应值(子串),它主要是针对字符型字段的,它的作用是在一个字符型字段列中检索包含对应子串的。

一、% 包含零个或多个字符的任意字符串:

1、like'Mc%' 将搜索以字母 Mc 开头的所有字符串(如 McBadden)。

2、like'%inger' 将搜索以字母 inger 结尾的所有字符串(如 Ringer、Stringer)。

3、like'%en%' 将搜索在任何位置包含字母 en 的所有字符串(如 Bennet、Green、McBadden)。

二、:_(下划线) 任何单个字符:

like'_heryl' 将搜索以字母 heryl 结尾的所有六个字母的名称(如 Cheryl、Sheryl)。

三、[ ] 指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符: 

1,like'[CK]ars[eo]n' 将搜索下列字符串:Carsen、Karsen、Carson 和 Karson(如 Carson)。

2、like'[M-Z]inger' 将搜索以字符串 inger 结尾、以从 M 到 Z 的任何单个字母开头的所有名称(如 Ringer)。

参考技术A mysql的通配符是 %
where tel like '137%' 查以137 开头的
where tel like '%137'查以137 结尾头的
where tel like '%137%' 只要包含137的都查出来本回答被提问者采纳
参考技术B 首先,要说明的是,通配符为%,或者是下划线。
%表示多个字符,下划线表示一个字符。

你的语句最好是改为:
select * from haoma where tel like '137%'

如果这样也一个记录都没有查询出来,说明你这个表里就不存在以137开头的记录。
参考技术C 不是#, 是%,而且要加单引号

select * from haoma where tel like '137%'
参考技术D 换成 `tel`like '137%'

以上是关于mysql查询语句中like 的用法的主要内容,如果未能解决你的问题,请参考以下文章

MySQL查询like语句查询

C#中 SQL语句 带参数的like 查询怎么写

MySQL 查询语句SELECT和数据条件过滤

mongodb模糊查询语句用法

sql语句中like的用法详细解析

mysql like查询语句