你还不懂MYSQL正则表达式?

正则表达式匹配的字符类

  • .:匹配任意单个字符
  • ^:匹配字符串的开始
  • $:匹配字符串的结束
  • *:匹配0个或多个前面的元素,尽可能多的
  • +:匹配1个或多个前面的元素,尽可能多的
  • ?:匹配0个或1个前面的元素,尽可能多的
  • *?:匹配0个或多个前面的元素,尽可能少的
  • +?:匹配1个或多个前面的元素,尽可能少的
  • ??:匹配0个或1个前面的元素,尽可能少的
  • [abc]:匹配字符集中的任意一个字符
  • [^abc]:匹配除了字符集中的任意一个字符以外的字符,即[abc]的补集
  • [a-z]:匹配范围内的任意一个小写字母
  • \d:匹配一个数字字符
  • \w:匹配一个字母数字字符(包括下划线)
  • \s:匹配一个空白字符(空格,换行,制表符)
  • {n,m}:指定重复的上线和下线

使用REGEXP进行模式匹配

REGEXP是用于进行正则表达式匹配的运算符
REGEXP用于检查一个字符串是否匹配指定的正则表达式模式,以下是基本语法

select column1,column2,...
from table_name
where column_name regexp 'pattern';

参数说明:

  • column1,column2是要选择查询的列名,使用*查询全部
  • table_name 是选择从哪一张表中查询数据
  • column_name是你要进行正则表达式匹配的列的列名
  • pattern是一个正则表达式模式 

查找 name 字段中以 'st' 为开头的所有数据:

mysql-> select * from perpson where name regexp '^st' 

查找 name 字段中以 'ok' 为结尾的所有数据:

mysql-> select * from peoson where name regexp 'ok$'

查找 name 字段中包含 'mar' 字符串的所有数据:

mysql-> select * from person where name regexp 'mar' 

查找 name 字段中以元音字符开头或以 'ok' 字符串结尾的所有数据:

mysql-> select * from person where name regexp '[aeiou]|ok$' 

选择订单表中描述中包含 "item" 后跟一个或多个数字的记录:

mysql-> select * from orders where order_description regexp 'item[0-9]+' 

使用 BINARY 关键字,使得匹配区分大小写:

mysql-> select * from person where name regexp binary 'Alice' 

使用 OR 进行多个匹配条件,以下将选择姓氏为 "Smith" 或 "Johnson" 的员工记录:

mysql-> select * from person where name regexp 'Smith|Johnson' 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值