MySQL通配符与正则表达式搜过滤数据详解

 更新时间:2022年09月30日 10:35:59   作者:随处可见的打字员  
简单来说,正则表达式就是用来匹配文本的特殊字符串,下面这篇文章主要给大家介绍了关于MySQL通配符与正则表达式搜过滤数据的相关资料,文中通过实例代码以及图文介绍的非常详细,需要的朋友可以参考下

通配符过滤

通配符:用来匹配值的一部分特殊字符。

通配符可以在搜索模式中任意位置使用,并且可以使用多个通配符。

搜索模式:由字面值、通配符或者两者组合构成的搜索条件。

语法(使用LIKE操作符):

SELECT [column_name]
FROM [table_name]
WHERE [column_name] LIKE '[string]';

通配符 %

‘%’ 表示任何字符出现任意次数,例如 LIKE ‘jet%’ 匹配词jet起头的值,‘%anvil%’ 匹配任何位置包含文本anvil的值。

注意

  • 根据MySQL的配置方式,搜索可以是区分大小写的;
  • ‘%’ 可以匹配0个字符;
  • 值的尾空格会干扰通配符匹配,最好在搜索模式最后附加一个%;
  • ‘%’ 不能匹配NULL。

通配符 _

‘_’ 只匹配单个字符。

技巧

  • 不要过度使用通配符,因为这会很花时间;
  • 如有必要,使用通配符匹配在搜索的最后;

正则表达式过滤

语法(使用REGEXP操作符):

SELECT [column_name]
FROM [table_name]
WHERE [column_name] REGEXP '[string]';

字符匹配

基本匹配:‘.’ 表示匹配任意一个字符。

基本字符匹配举例

正则表达式匹配不区分大小写,使用BINARY关键字区分,例如WHERE prod_name REGEXP BINARY ‘JetPack .000’。

  • OR匹配:‘1000|2000’ 表示匹配1000或者2000。
  • 多字符匹配:‘[123]’ 表示匹配 1 或 2 或 3,是 [1|2|3] 的缩写。

但是 ‘[1|2|3] Ton’ 和 ‘1|2|3 Ton’ 匹配结果并不相同,后者表示匹配 1 或 2 或 3 Ton。

  • 否定字符匹配:‘[^123]’ 表示匹配除这些字符外的任何东西。
  • 匹配范围:‘[0-9]’ 与 ‘[0123456789]’ 相同。‘[a-z]’ 匹配任意字母字符。
  • 匹配特殊字符:使用转义字符 ‘\’,例如 ‘\.’ 、’ \|’ 、‘\[’ 、‘\’。

其他字符

空白元字符

元字符说明
\\f换页
\\n换行
\\r回车
\\t制表
\\v纵向制表

字符类

说明
[:alnum:]任意字母和数字
[:alpha:]任意字符(同[a-zA-Z])
[:blank:]空格和制表
[:cntrl:]ASCII控制字符(0-31和127)
[:digit:]任意数字
[:graph:]与[:print:]相同,但是不包括空格
[:lower:]任意小写字母
[:print:]任意可打印字符
[:punct:]既不在[:alnum:]也不在[:cntrl:] 中的任意字符
[:space:]包括空格在内的任意空白字符
[:upper:]任意大写字符
[:xdigit:]任意十六进制数字

重复元字符

元字符说明
*0个或多个匹配
+1个或多个匹配
?0个或多个匹配
{n}指定数目匹配
{n, }不少于指定数目的匹配
{n, m}匹配数目的范围(m不超过255)

定位元字符

元字符说明
^文本的开始
$文本的结尾
[[:<:]]词的开始
[[:>:]]词的结尾

举例:

SELECT prod_name
FROM products
WHERE prod_name REGEXP '^[0-9\\.]';

对比

如果匹配文本在列值中出现,则LIKE不会匹配,但是REGEXP会匹配。

LIKE与REGEXP对比

可以通过用 ^ 开始每个表达式,用 $ 结束每个表达式,使得REGEXP的作用和LIKE一样。

正则表达式测试

SELECT 'hello' REGEXP '[0-9]';	//结果返回0

总结

到此这篇关于MySQL通配符与正则表达式搜过滤数据的文章就介绍到这了,更多相关MySQL通配符与正则过滤数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL多线程复制遇到Error_code: 1872的解决方案

    MySQL多线程复制遇到Error_code: 1872的解决方案

    本文给大家分享的是在使用mysql主从复制的时候遇到Error_code: 1872错误的解决方法,非常的简单,有需要的小伙伴可以参考下
    2016-09-09
  • 为什么MySQL分页用limit会越来越慢

    为什么MySQL分页用limit会越来越慢

    在mysql中limit可以实现快速分页,但是如果数据到了几百万时我们的limit必须优化才能有效的合理的实现分页了,否则可能卡死你的服务器
    2021-07-07
  • MySQL数据库安装和Navicat for MySQL配合使用教程

    MySQL数据库安装和Navicat for MySQL配合使用教程

    MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。这篇文章主要介绍了MySQL数据库安装和Navicat for MySQL配合使用,需要的朋友可以参考下
    2019-06-06
  • mysql 发生系统错误1067的解决方法

    mysql 发生系统错误1067的解决方法

    今天要把WEB项目打包成EXE,可是在数据库上卡住了。在启动数据库服务的时候发生系统错误 1067。
    2009-09-09
  • MySQL数据库聚合函数与分组查询举例详解

    MySQL数据库聚合函数与分组查询举例详解

    在MySQL中聚合函数和分组查询经常一起使用,下面这篇文章主要给大家介绍了关于MySQL数据库聚合函数与分组查询的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-01-01
  • MySQL 5.6 解压缩版安装配置方法图文教程(win10)

    MySQL 5.6 解压缩版安装配置方法图文教程(win10)

    这篇文章主要为大家详细介绍了MySQL for Windows 解压缩版安装配置的相关资料,需要的朋友可以参考下
    2016-07-07
  • mysql脏页是什么

    mysql脏页是什么

    本文主要介绍了什么是mysql脏页,为什么会出现脏页,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • 这种sql写法真的会导致索引失效吗

    这种sql写法真的会导致索引失效吗

    这篇文章主要给大家介绍了关于网上流传的某种sql写法会导致索引失效的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用sql具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • 关于MySQL中Update使用方法举例

    关于MySQL中Update使用方法举例

    这篇文章主要给大家介绍了关于MySQL中Update使用方法的相关资料,更新数据是使用数据库时最重要的任务之一,在本教程中您将学习如何使用MySQL UPDATE语句来更新表中的数据,需要的朋友可以参考下
    2023-11-11
  • MySQL5.7中 performance和sys schema中的监控参数解释(推荐)

    MySQL5.7中 performance和sys schema中的监控参数解释(推荐)

    在MySQL5.7中,performance schema有很大改进,包括引入大量新加入的监控项、降低占用空间和负载,以及通过新的sys schema机制显著提升易用性。下面通过本文给大家介绍 MySQL5.7中 performance和sys schema中的监控参数解释,需要的朋友可以参考下
    2017-08-08

最新评论