mysql正则表达式(基础使用)

本文详细介绍了MySQL中正则表达式的基础用法,包括与LIKE操作符的区别,如OR匹配、匹配范围、特殊字符转义、字符类型匹配、重复实例以及定位符的使用。通过实例展示了如何在SQL查询中运用正则表达式,帮助读者更好地理解和应用正则表达式进行数据筛选。
摘要由CSDN通过智能技术生成

mysql正则表达式(基础使用)


正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较

正则表达式的基础语法:

select * from products 
where prod_name REGEXP '1000';
查询结果。
+---------+---------+--------------+------------+---------------------------------------+
| prod_id | vend_id | prod_name    | prod_price | prod_desc                             |
+---------+---------+--------------+------------+---------------------------------------+
| JP1000  |    1005 | JetPack 1000 |      35.00 | JetPack 1000, intended for single use |
+---------+---------+--------------+------------+---------------------------------------+

正则表达式和like的区别:

我们来看一个SQL语句:

mysql> select * from products where prod_name REGEXP '1000';
+---------+---------+--------------+------------+---------------------------------------+
| prod_id | vend_id | prod_name    | prod_price | prod_desc                             |
+---------+---------+--------------+------------+---------------------------------------+
| JP1000  |    1005 | JetPack 1000 |      35.00 | JetPack 1000, intended for single use |
+---------+---------+--------------+------------+---------------------------------------+like查询没有通配符则不会匹配任何列值。
 select * from products where prod_name LIKE '1000';
Empty set (0.00 sec)

正则表达式的使用方法:
1、OR匹配:

--形式1 这种写法是错误的。可以写成 prod_name='1' or prod_name='2' or prod_name='3 ton'
select * from products where prod_name REGEXP '1|2|3 ton';
--形式2
select * from products where prod_name REGEXP '[123] ton';

注意:[^123]代表非1\2\3中的任意一个数值与下文中的^[123]以1\2\3开头是两种意思

2、匹配范围:

--匹配范围可以使用'-'来连接。
select * from products where prod_name REGEXP '[0-9] ton';

3、匹配特殊字符:

select * from products where prod_name REGEXP '\\.';

注意:,mysql中特殊字符转义需要用到两个’\\'来转义;MySQL自己解释一个,正则表达式库解释另一个。
空白元字符
元 字 符 说 明
\f 换页
\n 换行
\r 回车
\t 制表
\v 纵向制表

4、匹配字符类型:
字符类
[:alnum:] 任意字母和数字(同[a-zA-Z0-9])
[:alpha:] 任意字符(同[a-zA-Z])
[:blank:] 空格和制表(同[\t])
[:cntrl:] ASCII控制字符(ASCII 0到31和127)
[:digit:] 任意数字(同[0-9])
[:graph:] 与[:print:]相同,但不包括空格
[:lower:] 任意小写字母(同[a-z])
[:print:] 任意可打印字符
[:punct:] 既不在[:alnum:]又不在[:cntrl:]中的任意字符
[:space:] 包括空格在内的任意空白字符(同[\f\n\r\t\v])
[:upper:] 任意大写字母(同[A-Z])
[:xdigit:] 任意十六进制数字(同[a-fA-F0-9])

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

这里值得注意的是:

--“?”这个元字符的意思是为?匹配它前面的任何字符的0次或1次出现
select * from products where prod_name regexp '\\([0-9] sticks?\\)';

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

 select * from products where prod_name regexp '^[:digit:\\.]';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值