服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Mysql - MySQL正则表达式regexp_replace函数的用法实例

MySQL正则表达式regexp_replace函数的用法实例

2022-11-22 16:39msw Mysql

regexp_replace的使用非常灵活,且容易忘记,故做此笔记,下面这篇文章主要给大家介绍了关于MySQL正则表达式regexp_replace函数的用法实例,需要的朋友可以参考下

注:此函数为 MySQL8.0 版本新增,低于8.0版本没有此函数。

regexp_replace(expr, pat, repl[, pos[, occurrence[, match_type]]])

用法

将字符串expr与pat指定的正则表达式匹配的匹配项,替换为字符串repl,并返回结果字符串。如果expr、pat或repl为NULL,则返回值为NULL。

参数

  • expr:要替换的原始字符串,或者数据库表指定的列。 
  • pat:要匹配的正则表达式,pat为空串时抛异常,Illegal argument to a regular expression。 
  • repl:将匹配的pat替换成的字符串。 
  • pos:expr开始搜索的位置。如果省略,则默认值为 1。
  • occurrence:要替换哪个匹配项。如果省略,则默认值为 0(表示“替换所有匹配项”)。
  • match_type:指定如何执行匹配的任何或所有以下字符。(i:不区分大小写的匹配 默认。c:区分大小写的匹配。m: 多行模式。n:. 字符匹配行终止符。默认值是 .匹配在行尾停止。u: 仅 Unix 的行尾。只有换行符会被 、 和 match 运算符识别为以行结尾.的^行 $。)

用法

示例:基本用法,替换全部数字变成#。

?
1
select regexp_replace('1abc2', '[0-9]', '#');

输出:

MySQL正则表达式regexp_replace函数的用法实例

 示例:pos用法,从字符串第二位开始搜索,替换全部数字变成#。

?
1
select regexp_replace('12abc', '[0-9]', '#', 2);

输出:

MySQL正则表达式regexp_replace函数的用法实例

格式化手机号,将+86 13811112222转换为(+86) 138-1111-2222,’+‘在正则表达式中有定义,需要转义。\\1表示引用的第一个组

?
1
SELECT regexp_replace('+86 13811112222','(\\+[0-9]{2})( )([0-9]{3})([0-9]{4})([0-9]{4})','(\\1)\\3-\\4-\\5',0);

结果:(+86)138-1111-2222

?
1
2
SELECT regexp_replace("123.456.7890","([[:digit:]]{3})\\.([[:digit:]]{3})\\.([[:digit:]]{4})","(\\1)\\2-\\3",0) ;
SELECT regexp_replace("123.456.7890","([0-9]{3})\\.([0-9]{3})\\.([0-9]{4})","(\\1)\\2-\\3",0) ;

结果:(123)456-7890

将字符用空格分隔开,0表示替换掉所有的匹配子串。

?
1
SELECT regexp_replace('abcdefg123456ABC','(.)','\\1 ',0) AS new_str FROM dual;

结果:a b c d e f g 1 2 3 4 5 6 A B C

?
1
SELECT regexp_replace('abcdefg123456ABC','(.)','\\1 ',2) AS new_str FROM dual;

结果:ab cdefg123456ABC

?
1
SELECT regexp_replace("abcd","(.*)(.)$","\\1",0) ;

结果:abc

?
1
SELECT regexp_replace("abcd","(.*)(.)$","\\2",0) ;

结果:d

?
1
SELECT regexp_replace("abcd","(.*)(.)$","\\1-\\2",0) ;

结果:abc-d

其他案例:

?
1
2
3
4
5
SELECT regexp_replace("abcd","(.)","\\2",1) 结果为"abcd",因为pattern中只定义了一个组,引用的第二个组不存在。
SELECT regexp_replace("abcd","(.*)(.)$","\\2",0) 结果为"d"
SELECT regexp_replace("abcd","(.*)(.)$","\\1",0) 结果为"abc"
SELECT regexp_replace("abcd","(.*)(.)$","\\1-\\2",0) 结果为"abc-d"
SELECT regexp_replace("abcd","a","\\1",0),结果为” \1bcd”,因为在pattern中没有组的定义,所以\1直接输出为字符。

总结

到此这篇关于MySQL正则表达式regexp_replace函数用法的文章就介绍到这了,更多相关MySQL正则表达式regexp_replace函数内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/minshiwang/article/details/122822317

延伸 · 阅读

精彩推荐
  • Mysqllinux忘记mysql密码处理方法

    linux忘记mysql密码处理方法

    这篇文章主要为大家介绍下linux忘记mysql密码处理方法,需要的朋友可以参考下。 ...

    mdxy-dxy2862019-11-21
  • Mysql8种手动和自动备份MySQL数据库的方法

    8种手动和自动备份MySQL数据库的方法

    作为流行的开源数据库管理系统,MySQL的使用者众多,为了维护数据安全性,数据备份是必不可少的。本文就为大家介绍几种适用于企业的数据备份方法,需...

    IT168企业级11882019-06-21
  • Mysql可以改善mysql性能的InnoDB配置参数

    可以改善mysql性能的InnoDB配置参数

    MySQL与MSSQL 有一个区别在于MySQL建表的时候需要选择存储引擎,常用的存储引擎有MyISAM和InnoDB ...

    MYSQL教程网3792019-11-18
  • MysqlMySQL case when使用方法实例解析

    MySQL case when使用方法实例解析

    这篇文章主要介绍了MySQL case when使用方法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参...

    摘星族8682021-01-12
  • MysqlMySQL 加锁控制并发的方法

    MySQL 加锁控制并发的方法

    这篇文章主要介绍了MySQL 加锁控制并发的方法,帮助大家更好的理解和使用MySQL,感兴趣的朋友可以了解下...

    雪山飞猪9412021-04-07
  • Mysql8种MySQL分页方法总结

    8种MySQL分页方法总结

    这篇文章主要介绍了8种MySQL分页方法总结,小编现在才知道,MySQL分页竟然有8种实现方法,本文就一一讲解了这些方法,需要的朋友可以参考下 ...

    MYSQL教程网3632020-04-28
  • Mysqlmysql 8.0.18 mgr 搭建及其切换功能

    mysql 8.0.18 mgr 搭建及其切换功能

    这篇文章主要介绍了mysql 8.0.18 mysql搭建及其切换功能,本文通过实例代码给大家讲解的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下...

    davie20202102020-12-24
  • MysqlMySQL 可以用localhost 连接,但不能用IP连接的问题解决方法

    MySQL 可以用localhost 连接,但不能用IP连接的问题解决方法

    这篇文章主要介绍了MySQL 可以用localhost 连接,但不能用IP连接的问题解决方法的相关资料,这里提供了解决方案,需要的朋友可以参考下 ...

    服务器之家6062020-07-04