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 运算符识别为以行结尾.的^行 $。)

用法

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

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

输出:

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

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

输出:

格式化手机号,将+86 13811112222转换为(+86) 138-1111-2222,’+‘在正则表达式中有定义,需要转义。\\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

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表示替换掉所有的匹配子串。

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

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

结果:ab cdefg123456ABC

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

结果:abc

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

结果:d

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

结果:abc-d

其他案例:

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函数内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MySQL中使用replace、regexp进行正则表达式替换的用法分析

    本文实例讲述了MySQL中使用replace.regexp进行正则表达式替换的用法.分享给大家供大家参考,具体如下: 今天一个朋友问我,如果将数据库中查到的类似于"./uploads/110100_cityHotel_北京富豪华宾馆.jpg"这样的格式都修改为"./uploads/110100cityHotel北京富豪华宾馆.jpg"这样的格式.我本人是没有这样处理过数据的,但是我知道mysql是可以使用replace做到的,而且正则表达式也可以做到. 如何做呢?

  • 正则表达式regexp_replace的使用方法

    目录 前言 常用案例 总结 前言 regexp_replace的使用非常灵活,且容易忘记,故做此笔记. 没有过多的介绍使用说明,只是根据个人理解列出很多相似案例,个人觉得通过对比,更容易理解几个参数的使用技巧. 所有案例均是实跑出来的结果. 带颜色的部分是需要留意的地方. 命令格式: regexp_replace(source, pattern, replace_string, occurrence) 参数说明: ● source: string类型,要替换的原始字符串. ● pattern:

  • mysql数据库replace、regexp的用法

    replace.regexp的用法 0 Comments | This entry was posted on Apr 08 2010 mysql replace用法 1.replace into replace into table (id,name) values('1′,'aa'),('2′,'bb') 此语句的作用是向表table中插入两条记录.如果主键id为1或2不存在 就相当于 insert into table (id,name) values('1′,'aa'),('2′,'bb

  • 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为空串时

  • Sql Server中Substring函数的用法实例解析

    SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分.这个函数的名称在不同的资料库中不完全一样: MySQL: SUBSTR( ), SUBSTRING( ) Oracle: SUBSTR( ) SQL Server: SUBSTRING( ) SQL 中的 substring 函数是用来截取一个栏位资料中的其中一部分. 例如,我们需要将字符串'abdcsef'中的'abd'给提取出来,则可用substring 来实现: select substring('abdcsef'

  • MySQL数据类型中DECIMAL的用法实例详解

    MySQL数据类型中DECIMAL的用法实例详解 在MySQL数据类型中,例如INT,FLOAT,DOUBLE,CHAR,DECIMAL等,它们都有各自的作用,下面我们就主要来介绍一下MySQL数据类型中的DECIMAL类型的作用和用法. 一般赋予浮点列的值被四舍五入到这个列所指定的十进制数.如果在一个FLOAT(8, 1)的列中存储1. 2 3 4 5 6,则结果为1. 2.如果将相同的值存入FLOAT(8, 4) 的列中,则结果为1. 2 3 4 6. 这表示应该定义具有足够位数的浮点列以便

  • Mysql inner join on的用法实例(必看)

    语法规则 SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name 先创建两个表,1.用户,2.用户类别 用户表 CREATE TABLE `user` ( `id` int(32) NOT NULL AUTO_INCREMENT, `name` varchar(16) NOT NULL, `kindid` int(32) NOT

  • ES6中Array.copyWithin()函数的用法实例详解

    ES6为Array增加了copyWithin函数,用于操作当前数组自身,用来把某些个位置的元素复制并覆盖到其他位置上去. Array.prototype.copyWithin(target, start = 0, end = this.length) 该函数有三个参数. target:目的起始位置. start:复制源的起始位置,可以省略,可以是负数. end:复制源的结束位置,可以省略,可以是负数,实际结束位置是end-1. 例: 把第3个元素(从0开始)到第5个元素,复制并覆盖到以第1个位置

  • C语言中qsort函数的用法实例详解

    C语言中qsort函数的用法实例详解 快速排序是一种用的最多的排序算法,在C语言的标准库中也有快速排序的函数,下面说一下详细用法. qsort函数包含在<stdlib.h>中 qsort函数声明如下: void qsort(void * base,size_t nmemb,size_t size ,int(*compar)(const void *,const void *)); 参数说明: base,要排序的数组 nmemb,数组中元素的数目 size,每个数组元素占用的内存空间,可使用si

  • PHP正则表达式函数preg_replace用法实例分析

    本文实例讲述了PHP正则表达式函数preg_replace用法.分享给大家供大家参考,具体如下: preg_replace 执行一个正则表达式的搜索和替换 语法:preg_replace (pattern ,replacement ,subject,limit,count ) 参数 描述 pattern 正则表达式(字符串或字符串数组) replacement 用于替换的字符串或字符串数组 subject 要进行搜索和替换的字符串或字符串数组. limit 可选.每个模式在每个subject上进

  • MySQL流程函数常见用法实例分析

    本文实例讲述了MySQL流程函数常见用法.分享给大家供大家参考,具体如下: 流程函数是MySQL相对常用的一类函数, 用户可以使用这类函数在一个SQL语句中实现条件选择, 这样能够提高效率. 下面列出了MySQL跟条件有关的流程函数 函数 功能 IF(expr1,expr2,expr3) 如果expr1是真, 返回expr2, 否则返回expr3 IFNULL(expr1,expr2) 如果expr1不是NULL,返回expr1,否则返回expr2 CASE WHEN [value1] THEN

  • js正则表达式test()和exec()用法实例

    本文实例讲述了js正则表达式test()和exec()用法.分享给大家供大家参考.具体如下: 复制代码 代码如下: <html> <head> <script type="text/javascript"> //正则.test(内容),返回true或false function t1(){  var con = document.getElementsByName('content')[0].value;//需要查找的内容  var reg = /h

  • php中正则替换函数ereg_replace用法实例

    本文实例讲述了php中正则替换函数ereg_replace用法.分享给大家供大家参考.具体如下: 下面的实例是利用php 正则替换函数 ereg_replace来把指定的字符替换成我想需要的字符实例,代码如下: 复制代码 代码如下: $num = 'www.jb51.net'; $string = "this string has four words. <br>"; $string = ereg_replace ('four', $num, $string); echo

随机推荐