等待下一个秋

  • Spark
  • Flink
  • Hive
  • 数据仓库
  • ClickHouse
  • 收徒弟
  • Java
    • Spring
    • Mybatis
    • SpringBoot
    • 面试题
  • Python
    • Python基础
    • 爬虫
    • Numpy
    • matplotlib
    • Flask
  • 技术杂谈
    • Linux知识
    • Docker
    • Git教程
    • Redis教程
    • mysql
    • 前端
    • R语言
    • 机器学习
  • 关于我
  • 其它
    • 副业挣钱
    • 资料下载
    • 资料文档
专注于Hadoop/Spark/Flink/Hive/数据仓库等
关注公众号:大数据技术派,获取更多学习资料。
  1. 首页
  2. 技术杂谈
  3. mysql
  4. 正文

MySQL LIKE通配符(%,_)及escape实例讲解

2021年10月13日 700点热度 0人点赞 0条评论

摘要:在本教程中,您将学习如何使用MySQL LIKE操作符模糊查询数据及其通配符%、下划线、escape使用实例。

 

LIKE操作符常用于模式匹配查询数据。以正确的方式使用LIKE运算符对于提高查询性能至关重要。

LIKE操作符允许您从基于指定的模式选择表中的数据。因此,LIKE操作符经常用于SELECT语句的WHERE子句中。

MySQL提供了两个通配符与LIKE操作符一起使用:百分比 %和下划线_。

  • percent(%)通配符允许您匹配任何零个或多个字符的字符串。
  • 下划线(_)通配符允许您匹配任何单个字符。

 

MySQL LIKE示例

让我们练习一些使用LIKE操作符的例子。请参employees见下表。

 

MySQL LIKE 百分号(%)通配符

假设要查找名字以字符a开头的员工,可以在模式匹配的结尾处使用百分比(%)通配符,如下所示:

SELECT 
    employeeNumber, lastName, firstName
FROM
    employees
WHERE
    firstName LIKE 'a%';

结果如下:

MySQL扫描整个employees表以查找名字以字符a开头,后跟任意数量字符的员工。

如果要查找名字以on结尾的员工,可以在模式匹配查询中使用通配符%开头,“on”结尾的组合, 如:

SELECT 
    employeeNumber, lastName, firstName
FROM
    employees
WHERE
    lastName LIKE '%on';

结果如下:

如果你要查找名字含有on的员工,则可以使用 like '%on%',如:

SELECT 
    employeeNumber, lastName, firstName
FROM
    employees
WHERE
    lastname LIKE '%on%';

结果如下:

 

MySQL LIKE通配符下划线(_)

如果要查找姓名以T开头,m结尾并且名字为三个字符的员工,可以使用下划线通配符来构造一个SQL查询语句,如:

SELECT 
    employeeNumber, lastName, firstName
FROM
    employees
WHERE
    firstname LIKE 'T_m';

结果如下:

 

MySQL LIKE运算符与NOT运算符

MySQL允许您结合NOT运算符和LIKE运算符来查找不匹配特定模式的字符串。

假设要查找姓氏不以字符B开头的员工,可以使用 NOT LIKE 模式匹配:

SELECT 
    employeeNumber, lastName, firstName
FROM
    employees
WHERE
    lastName NOT LIKE 'B%';

结果如下:

请注意,如果LIKE运算符的查询模式使用的是字母,那么它是不区分大小写的,因此b%和B%两个型态查询产生的结果是相同的。

 

MySQL LIKE与ESCAPE

有时,要匹配的模式包含通配符,例如10%,_20等。在这些情况下,可以使用ESCAPE子句指定转义字符,以便MySQL将通配符解释为文字字符。如果没有明确指定转义字符,默认的转义字符是反斜杠"\"。

例如,如果要查找products表中productCode字段包含字符串_20的产品,则可以使用模式%\_20%查询:

SELECT 
    productCode, productName
FROM
    products
WHERE
    productCode LIKE '%\_20%';

或者也可以指定一个不同的转义字符。例如,通过ESCAPE子句使用 $ 作为转义符:

SELECT 
    productCode, productName
FROM
    products
WHERE
    productCode LIKE '%$_20%' ESCAPE '$';

结果如下:

模式%$_20%匹配包含_20字符串的任何字符串。

LIKE语句会扫描表中的所以行,因此,索引对优化like语句来说没有任何效果。所以,使用LIKE操作符查询大量数据时,其性能非常低。


标签: mysql
最后更新:2021年10月13日

等待下一个秋

待我代码写成,便娶你为妻!专注于Hadoop/Spark/Flink/Hive/数据仓库等,关注公众号:大数据技术派,获取更多学习资料。

打赏 点赞
< 上一篇
下一篇 >

文章评论

取消回复

等待下一个秋

待我代码写成,便娶你为妻!专注于Hadoop/Spark/Flink/Hive/数据仓库等,关注公众号:大数据技术派,获取更多学习资料。

搜一搜
微信
最新 热点 随机
最新 热点 随机
ClickHouse 自定义分区键 ClickHouse数据副本引擎 ClickHouse ReplacingMergeTree引擎 ClickHouse MergeTree引擎 clickhouse简介 Flink SQL管理平台flink-streaming-platform-web安装搭建
Elasticsearch修改字段类型 数据湖是谁?那数据仓库又算什么? MySQL DISTINCT去除及多字段实例讲解 Matplotlib 安装 为什么要学R语言 Hive实战UDF 外部依赖文件找不到的问题
标签聚合
算法 Hive Python Flink R语言 大数据 书籍 数据仓库 Java 挣钱 mysql Redis
文章归档
  • 2022年12月
  • 2022年11月
  • 2022年9月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年5月
  • 2020年4月
  • 2020年1月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年1月
  • 2018年12月
  • 2017年5月

©2022 ikeguang.com. 保留所有权利。

鄂ICP备2020019097号-1

鄂公网安备 42032202000160号