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

作者:随处可见的打字员 时间:2024-01-23 03:12:54 

通配符过滤

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

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

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

语法(使用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]';

字符匹配

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

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

正则表达式匹配不区分大小写,使用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\\.]';

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

对比

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

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

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

正则表达式测试

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

来源:https://blog.csdn.net/qq_40948559/article/details/123999341

标签:mysql,通配符,正则表达式
0
投稿

猜你喜欢

  • Oracle PL/SQL入门案例实践

    2010-07-18 13:13:00
  • Python连接es之查询方式示例汇总

    2023-06-07 11:11:03
  • PHP生成饼图的示例代码

    2023-05-25 10:24:09
  • Oracle中instr函数使用方法

    2023-07-23 19:14:06
  • 详解Python中__str__和__repr__方法的区别

    2023-02-28 17:29:17
  • 深入探讨SQL Server 2008商务智能(BI)

    2008-12-23 13:56:00
  • SpringBoot用多线程批量导入数据库实现方法

    2024-01-23 23:03:36
  • numpy.float32的典型用法

    2022-04-30 04:36:30
  • Python实现的直接插入排序算法示例

    2022-09-23 05:22:28
  • MySQL七大JOIN的具体使用

    2024-01-28 04:11:31
  • Python函数参数定义及传递方式解析

    2021-10-19 21:28:25
  • python深度学习之多标签分类器及pytorch实现源码

    2022-09-26 01:09:12
  • 正则表达式不匹配某个字符串

    2010-03-02 22:08:00
  • Mootools 1.2教程(9)——输入过滤第二部分(字符串)

    2008-12-01 12:25:00
  • Golang中由零值和gob库特性引起BUG解析

    2024-05-08 10:52:52
  • SQL Server 2005中数据库镜像的四个问题

    2009-02-19 16:48:00
  • SQL实战演练之网上商城数据库用户信息数据操作

    2024-01-15 10:26:39
  • 我们用什么来衡量设计3:定量研究的风险

    2009-07-19 14:14:00
  • 详解express + mock让前后台并行开发

    2024-05-03 15:54:35
  • 你应该知道的Python3.6、3.7、3.8新特性小结

    2023-10-14 02:18:37
  • asp之家 网络编程 m.aspxhome.com