mysql like 数字结尾_产品操作MySQL第7篇 – 运算符 - LIKE

本文介绍了MySQL中的LIKE运算符用于模糊匹配的方法,包括使用百分号(%)和下划线(_)实现开头、结尾和中间的匹配,以及结合NOT关键字排除特定匹配。同时,讲解了如何使用ESCAPE子句处理特殊字符,自定义转义符号,并强调了LIKE运算符对数据库性能的影响及其不区分大小写的特点。
摘要由CSDN通过智能技术生成
f85f4e98ddf02d70ae7e3451bedfae4a.png

MYSQL

本资料为产品岗位作为日常工作参考,语言口语化

At 2019/4/27 By David.Yang

介绍什么是LIKE运算符

有时候我们在数据过滤时,并没有非常精准的过滤条件,

而是受限与一些比较模糊的查询,

比如天龙八部里面儿姓段的到哪儿都不受待见。

怎么查名字段开头的呢?

语法

ϒLIKE作为过滤条件通常配合在WHERE子句当中使用

ϒMYSQL提供两种方式来实现模糊匹配,用来与LIKE配合使用:百分号(%)、下划线(_)

百分号(%):通配符允许匹配任意字符串的[0]个或[多个]

下划线(_):通配符允许匹配任何[单个字符串]

LIKE使用(%)实现匹配

为了实现模糊匹配,我们将学生表进行一些修改,

补充姓、名两个字段

a3c898124eb0bccff1081db0b5fbc823.png

并完成数据的补充

023d543032b6284f4aa0105009e79349.png

语法

WHERE

column LIKE X%

ϒcolumn 需要匹配的字段值

ϒLIKE 模糊关键字

ϒX 匹配表达式

ϒ% 表示目标匹配符

以X开头的匹配

来了来了,我们可以开始玩儿了。

我们搜索学生名字,并且以[y]字母开头,可以使用%,

表达式

x%

SQL

SELECT

*

FROM

students

WHERE

firstname LIKE "y%";

来来来,瞅瞅都拿到些啥

241478109ab121325838b05e97f2f560.png

以X结尾的匹配

我还要找名里边儿v结尾的学生有哪些

表达式

% x

SQL

SELECT

*

FROM

students

WHERE

firstname LIKE "%v";

yoyoyo,看看找到谁了

0f654ff4f256b53830571572c1b74439.png

包含X的匹配

我还要找名里边儿只要带ng的学生

表达式

% x%

SQL

SELECT

*

FROM

students

WHERE

firstname LIKE "%ng%";

找到的学生们是

b077a0920c5b1fc482ec1b9da9d4e6c1.png

LIKE使用(_)实现匹配

来来来,我们来看看这3条有意思的数据,

ae6b0000134bc7ebb62dac92ccfcb008.png

他们都是s*i的规律,即s开头,i结尾,

我们使用_匹配看看有什么结果

表达式

x_y

SQL

SELECT

*

FROM

students

WHERE

firstname LIKE "s_i";

fd972677b860e21755ed8f2becb50995.png

是返回了这么一条数据,为什么呢?

忘了我们上文定义语法时讲的么?

x_y表达式匹配时,通配符允许匹配任何[单个字符串]

ϒ左匹配

4c69914eddd55d6a35bfeb5e4d32b8ea.png

表达式

x_

SQL

SELECT

*

FROM

students

WHERE

firstname LIKE "s_";

264d7d9f64a72ee18d973e19e04dd3e0.png

ϒ右匹配

表达式

_x

SQL

SELECT

*

FROM

students

WHERE

firstname LIKE "_i";

3c727644a25e66fd690f41daa0252844.png

NOT特性的LIKE运算符的使用

NOT关键子可以和LIKE组合使用,以用来查询不匹配特定表达式的数据。

语法

WHERE

column NOT LIKE X%

举个栗子

要找到所有不以s字符开头的学生,用NOT LIKE操作

SQL

SELECT

*

FROM

students

WHERE

firstname NOT LIKE "%s"

LIMIT 10;

瞅一瞅

1675e066ab7c8ea53d9d7149e1176ca1.png

LIKE与ESCAPE子句的使用

有时候吧,我们的数据当中本来就包含特殊符号,

还整好有%和_,

你说巧不巧?

那这时候使用LIKE查询会不会出问题呢?

该怎么办呢?

能办!

用转义,通过转义符号将其特殊内容转化成普通的文字字符,

就能够无障碍继续使用LIKE匹配了。

举个例子

7245af44942507e4f6dc33b6d6d6711f.png

构建了两人名字,有%字符

我们找出包含dun%的那个谁出来

SQL

SELECT

*

FROM

students

WHERE

firstname LIKE "dun%%";

他来了

f313e64724a3e645aed02da857820629.png

再比如

cd8554bd85cc0e776bfac53c64aa4a65.png

这人我贼讨厌,要找他也一样操作

SQL

SELECT

*

FROM

students

WHERE

firstname LIKE "%_jing";

臭小子给揪出来了

3d944c98fd4b035581262e2e153d2d2e.png

怎么找出来的呢?

原来是这个是他“”,英文的反斜杠,

在数据库和很多编程语言当中都是用“”来表示转义,

即将特殊字符转化成普通字符。

自定义转义符号

如果我不想用“”呢?

没问题啊,满足你。

使用ESCAPE,世界就是你的,

你可以自己指定符号作为你的转义符,

比如我就喜欢钱,

us doller,我用$

SQL

SELECT

*

FROM

students

WHERE

firstname LIKE "%$_jing" ESCAPE "$";

赵志敬,你逃不掉的

13b0cb1fd0bb90447466e2f6fc423c7a.png

以上通过ESCAPE “你的符号”来实现自定义转义符

补充

ϒLIKE运算符的使用是否正确对数据库的性能影响很大,LIKE运算符强制MYSQL扫描整个数据表以找到满足匹配条件的数据行,他不允许数据库引擎使用索引进行快速搜索,因此在数量较大时使用LIKE查询会造成数据库性能大幅度下降。

ϒLIKE运算符不区分大小写,x% 和 X%效果相同

本文讲解了LIKE的模糊匹配怎么使用,

are you 会了么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值