产品操作MySQL第7篇 – 运算符 - LIKE

MYSQL

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

At 2019/4/27 By David.Yang


介绍什么是LIKE运算符

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

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

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


怎么查名字段开头的呢?


语法

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

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

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

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


LIKE使用(%)实现匹配

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

补充姓、名两个字段


并完成数据的补充


语法

WHERE

column LIKE X%

ϒ column 需要匹配的字段值

ϒ LIKE 模糊关键字

ϒ X 匹配表达式

ϒ % 表示目标匹配符


以X开头的匹配

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


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


表达式

x%


SQL

SELECT

*

FROM

students

WHERE

firstname LIKE "y%";


来来来,瞅瞅都拿到些啥


以X结尾的匹配

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


表达式

% x


SQL

SELECT

*

FROM

students

WHERE

firstname LIKE "%v";


yoyoyo,看看找到谁了


包含X的匹配

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


表达式

% x%


SQL

SELECT

*

FROM

students

WHERE

firstname LIKE "%ng%";


找到的学生们是


LIKE使用(_)实现匹配

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


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

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


表达式

x_y


SQL

SELECT

       *

FROM

       students

WHERE

       firstname LIKE "s_i";



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


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


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


ϒ 左匹配

表达式

x_


SQL

SELECT

       *

FROM

       students

WHERE

       firstname LIKE "s_";


ϒ 右匹配

表达式

_x


SQL

SELECT

*

FROM

students

WHERE

firstname LIKE "_i";


NOT特性的LIKE运算符的使用

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


语法

WHERE

column NOT LIKE X%


举个栗子

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

SQL

SELECT

*

FROM

students

WHERE

firstname NOT LIKE "%s"

LIMIT 10;


瞅一瞅


LIKE与ESCAPE子句的使用

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

还整好有%和_,

你说巧不巧?


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


该怎么办呢?


能办!


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

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


举个例子



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


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


SQL

SELECT

       *

FROM

       students

WHERE

       firstname LIKE "dun\%%";


他来了


再比如


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


SQL

SELECT

       *

FROM

       students

WHERE

       firstname LIKE "%\_jing";


臭小子给揪出来了


怎么找出来的呢?

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


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

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


自定义转义符号

如果我不想用“\”呢?


没问题啊,满足你。


使用ESCAPE,世界就是你的,

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


比如我就喜欢钱,

us doller,我用$


SQL

SELECT

*

FROM

students

WHERE

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


赵志敬,你逃不掉的


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


补充

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

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



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


are you 会了么?

你可能感兴趣的:(产品操作MySQL第7篇 – 运算符 - LIKE)