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通配符与正则过滤数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Advanced Pagination for MySQL(mysql高级分页)

    Advanced Pagination for MySQL(mysql高级分页)

    看到叶金荣的一篇关于mysql分页的文章,结合雅虎之前发的一篇PDF 谈谈自己的看法
    2016-08-08
  • Ubuntu20下MySQL 8.0.28 安装卸载方法图文教程

    Ubuntu20下MySQL 8.0.28 安装卸载方法图文教程

    这篇文章主要为大家详细介绍了Ubuntu20下MySQL 8.0.28 安装卸载方法图文教程,文中安装步骤介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Mysql性能优化方案分享

    Mysql性能优化方案分享

    这篇文章主要为大家分享了Mysql性能优化方案,帮助大家进行Mysql性能优化,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • mysql对于模糊查询like的一些汇总

    mysql对于模糊查询like的一些汇总

    这篇文章主要给大家介绍了关于mysql对于模糊查询like的一些汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • MySQL 1130错误原因分析以及解决方案

    MySQL 1130错误原因分析以及解决方案

    这篇文章主要给大家介绍了关于MySQL 1130错误原因分析以及解决方案的相关资料,MySQL 1130错误通常是由于连接MySQL时使用的用户名或密码不正确所导致的,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • Mysql锁机制之行锁、表锁、死锁的实现

    Mysql锁机制之行锁、表锁、死锁的实现

    本文主要介绍了Mysql锁机制之行锁、表锁、死锁的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • MySQL日志配置与查看方法

    MySQL日志配置与查看方法

    作为数据库管理员,我曾多次遇到因日志配置不当导致的线上故障,今天我将结合多年一线运维经验,系统讲解MySQL五大核心日志的配置与查看方法,并附上实际生产环境中的排错案例,需要的朋友可以参考下
    2025-09-09
  • MySQL中case when的两种基本用法及区别总结

    MySQL中case when的两种基本用法及区别总结

    在mysql中case when用于计算条件列表并返回多个可能结果表达式之一,下面这篇文章主要给大家介绍了关于MySQL中case when的两种基本用法及区别的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • SELECT INTO 和 INSERT INTO SELECT 两种表复制语句简单介绍

    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句简单介绍

    Insert是T-sql中常用语句,Insert INTO table(field1,field2,...) values(value1,value2,...)这种形式的在应用程序开发中必不可少
    2012-11-11
  • MySQL数据类型之浅谈字符串(string)

    MySQL数据类型之浅谈字符串(string)

    这篇文章主要介绍了MySQL数据类型之字符串(string)的使用,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-10-10

最新评论