MySQL 8.0新特性--Regular Expressions(四)
2018-12-08 18:25
796 查看
MySQL8.0暂时支持如下几种正则表达式函数,本文只是抛砖引玉,更多内容请参考MySQL手册。
Name | Description |
---|---|
NOT REGEXP | Negation of REGEXP |
REGEXP | Whether string matches regular expression |
REGEXP_INSTR() | Starting index of substring matching regular expression |
REGEXP_LIKE() | Whether string matches regular expression |
REGEXP_REPLACE() | Replace substrings matching regular expression |
REGEXP_SUBSTR() | Return substring matching regular expression |
RLIKE | Whether string matches regular expression |
regexp、rlike、regexp_like()三者功能相同,只是写法不同
not regexp是否定形式
mysql> select 'abc' regexp '^a'; +-------------------+ | 'abc' regexp '^a' | +-------------------+ | 1 | +-------------------+ 1 row in set (0.00 sec) mysql> select 'abc' rlike '^a'; +------------------+ | 'abc' rlike '^a' | +------------------+ | 1 | +------------------+ 1 row in set (0.00 sec) mysql> select regexp_like('abc','^a'); +-------------------------+ | regexp_like('abc','^a') | +-------------------------+ | 1 | +-------------------------+ 1 row in set (0.00 sec) mysql> select 'abc' not regexp '^a'; +-----------------------+ | 'abc' not regexp '^a' | +-----------------------+ | 0 | +-----------------------+ 1 row in set (0.00 sec) mysql> select not regexp_like('abc','^a'); +-----------------------------+ | not regexp_like('abc','^a') | +-----------------------------+ | 0 | +-----------------------------+ 1 row in set (0.00 sec)
regexp_replace()替代函数
mysql> select regexp_replace('a1,b2,c3','[a-z]{1}','b'); +-------------------------------------------+ | regexp_replace('a1,b2,c3','[a-z]{1}','b') | +-------------------------------------------+ | b1,b2,b3 | +-------------------------------------------+ 1 row in set (0.00 sec) mysql> select regexp_replace('aaa,b2,c3','[a-z]{2}','d'); +--------------------------------------------+ | regexp_replace('aaa,b2,c3','[a-z]{2}','d') | +--------------------------------------------+ | da,b2,c3 | +--------------------------------------------+ 1 row in set (0.00 sec)
regexp_substr() 截断字符串
mysql> select regexp_substr('a1,b1,c1,ddds','[a-z 0-9]{1,9}',1,1); +-----------------------------------------------------+ | regexp_substr('a1,b1,c1,ddds','[a-z 0-9]{1,9}',1,1) | +-----------------------------------------------------+ | a1 | +-----------------------------------------------------+ 1 row in set (0.00 sec) mysql> select regexp_substr('a1,b1,c1,ddds','[a-z 0-9]{1,9}',1,2); +-----------------------------------------------------+ | regexp_substr('a1,b1,c1,ddds','[a-z 0-9]{1,9}',1,2) | +-----------------------------------------------------+ | b1 | +-----------------------------------------------------+ 1 row in set (0.00 sec) mysql> select regexp_substr('a1,b1,c1,ddds','[a-z 0-9]{1,9}',1,3); +-----------------------------------------------------+ | regexp_substr('a1,b1,c1,ddds','[a-z 0-9]{1,9}',1,3) | +-----------------------------------------------------+ | c1 | +-----------------------------------------------------+ 1 row in set (0.00 sec) mysql> select regexp_substr('a1,b1,c1,ddds','[a-z 0-9]{1,9}',1,4); +-----------------------------------------------------+ | regexp_substr('a1,b1,c1,ddds','[a-z 0-9]{1,9}',1,4) | +-----------------------------------------------------+ | ddds | +-----------------------------------------------------+ 1 row in set (0.00 sec)
regexp_instr() 返回匹配的字符串开始位置index.
mysql> select regexp_instr('dogcatdog','dog',1); +-----------------------------------+ | regexp_instr('dogcatdog','dog',1) | +-----------------------------------+ | 1 | +-----------------------------------+ 1 row in set (0.00 sec) mysql> select regexp_instr('dogcatdog','dog',2); +-----------------------------------+ | regexp_instr('dogcatdog','dog',2) | +-----------------------------------+ | 7 | +-----------------------------------+ 1 row in set (0.00 sec) mysql> select regexp_instr('a aa aaa aaaa','a{3}',1); +----------------------------------------+ | regexp_instr('a aa aaa aaaa','a{3}',1) | +----------------------------------------+ | 6 | +----------------------------------------+ 1 row in set (0.00 sec)
更多内容请参考如下链接
相关文章推荐
- MySQL 8.0的关系数据库新特性详解
- MySQL 8.0的十大新特性
- MySQL 8.0复制新特性
- MySQL 8.0新特性之原子DDL
- MySQL 8.0 的关系数据库新特性
- MySQL 8.0新特性之Windows Function
- Mysql 8.0 新增特性
- MySQL 8.0 InnoDB新特性
- MySQL 8.0新特性
- MySQL 8.0新特性:彻底解决困扰运维的复制延迟问题,你信吗? - MySQL
- MySQL 8.0新特性--让你轻轻松松找到配置项的位置
- MySQL8.0-新特性-role
- MySQL 8.0新特性:彻底解决困扰运维的复制延迟问题,你信吗? - MySQL
- MySQL8.0 新特性:Partial Update of LOB Column
- MySQL 8.0新特性--invisible index(五)
- MySQL8.0 新特性:Partial Update of LOB Column
- MySQL 8.0新特性--Descending Indexes(六)
- Mysql 8.0 新增特性
- MySQL 8.0新特性--skip scan range access method(七)
- 关于 MySQL 8.0 新特性“隐藏索引”的一点思考