Mysql 的正则表达式简介

Mysql 的正则表达式


匹配文本,将一个模式与文本进行比较

例如:

select name_s
from pros
where name_s regexp '1000' //表示包含1000的所有行 s1000也是
order by name_s;
  • .是正则表达式语言中的任意匹配一个字符的意思
    select *
    from emp
    where name_s regexp 'A.' //不区分大小写
    order by name_s;
    
    where name_s regexp binary 'a.' //区分大小写
    

1. 进行or匹配

为了搜索两个串之一(两种串我都要) |

select * from emp where name_s REGEXP 'a|c' ORDER by name_s; ///有a或有c

2. 匹配几个字符之一

匹配单一字符。但是,如果想要特定字符就需要[]

select prod_name from products
WHERE prod_name REGEXP '[123] Ton' # 从123中的任意一个 类似[1|2|3]
select prod_name from products
WHERE prod_name REGEXP '[^123] Ton' # 除了123以外

select prod_name from products
WHERE prod_name REGEXP '1|2|3 Ton' #注意这里是 1 | 2 | 3 Ton
3. 匹配范围
  • -号替换
[1-3] = [123] 这两个相同
[a-z] = [a...z]
4. 使用特殊字符

.我们要使用的话

  • \\前导这个就可以了
select * from products 
WHERE prod_name REGEXP '\\.'
select * from products 
WHERE prod_name REGEXP '[\\t]' --空格
说明
[: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]
元 字 符说 明
+1个或多个匹配(等于{1,})
*0个或多个匹配
{n}指定数目的匹配
{n,}不少于指定数目的匹配
{n,m}匹配数目的范围(m不超过255)

样例:

SELECT * from products
WHERE prod_name Regexp '[[:digit:]]{4}'
order by prod_name

Query result 2 rows!

prod_idvend_idprod_nameprod_priceprod_desc
JP10001005JetPack 100035JetPack 1000, intended for single use
JP20001005JetPack 200055JetPack 2000, multi-use
模式描述
^匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置。
$匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置。
.匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式。
[…]字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’。
[^…]负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’。
*匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
+匹配前面的子表达式一次或多次。例如,‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}。
{n}n 是一个非负整数。匹配确定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o。
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。
SELECT *
from products
WHERE prod_name
Regexp '\\([0-9] stic.{0,1}\\)'
order by prod_name
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值