Oracle函数详解:regexp_replace

3 篇文章 0 订阅
订阅专栏
1 篇文章 1 订阅
订阅专栏

regexp_replace:

  1. 官方内容:
    官方语法:
    syntax
    官方说明:
    purpose

https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions130.htm

regexp_replace函数是replace函数的扩展函数,用于通过正则表达式来进行匹配替换,默认情况下,每次匹配到的正则,都替换为replace_string,返回的字符串与source_char字符集相同。如果source_char为非LOB类型,则返回varchar2数据类型,如果为LOB类型,则返回CLOB类型,该函数符合POSIX正则和Unicode正则。

  • source_char是一个用作搜索的值,它通常是一种字符列,可以以下是任何数据类型CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB、NCLOB

  • pattern是正则表达式,可以是以下任意数据类型CHAR、VARCHAR2、NCHAR、NVARCHAR2。最多可包含512个字节。如果pattern数据类型与source_char异同,则Oracle将转换pattern的数据类型与source_char的一致。

  • replace_string可以是以下任意数据类型CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB、NCLOB。如果replace_string是CLOB或NCLOB,则Oracle截断replace_string为32K。replace_string可含有多达500个反向引用作为子表达式,其形式为\n,n为数字1~9。如果n在replace_string中为反斜线字符,则需使用转移字符在其前面(\)

  • position是一个正整数,表示在source_char中Oracle应该开始搜索的字符。默认值为1,表示Oracle以第一个字符开始搜索。

  • occurrence是一个非负整数,表示替换动作的发生,如果为0,则Oracle将替换所有匹配项,如果为正整数n,则Oracle将替换第n个匹配项。

  • match_parameter是一个文本文件,用于更改匹配行为,仅影响匹配过程,并不影响replace_string。可以指定以下一个或多个值:
    ‘i’指定不区分大小写的匹配
    ‘c’区分大小写的匹配
    ‘n’允许‘.’(句点,配置任意字符)匹配换行符,如果省略此此参数,则句点与换行符不匹配
    ‘m’将源字符串视为多行。Oracle将源字符串中的^或$视为行首或行尾,如果省略此参数,Oracle将源字符串视为单行
    ‘x’忽略空格字符。默认情况下,空白字符与自身匹配。
    如果指定多个矛盾值,Oracle将使用最后一个值,例如指定’ic’,则Oracle使用区分大小写匹配,如果指定的不是上述字符,则返回错误
    如果省略match_parameter,则:
    1.默认的区分大小写由NLS_SORT参数的值决定
    2.句点‘.’与换行符不匹配
    3.源字符串视为单行

以上中文内容为本人自行翻译,仅供参考

  1. 实验:
    以下开始通过实验验证各参数功能的使用
  • 简单使用:

实验 1:

SQL> select regexp_replace('0123456789','01234','0abc') from dual;

将 01234 替换为 0abc
regexp_replace-1

完全匹配替换,并非对应替换
regexp_replace-1-exp

  • 通过正则表达式匹配

实验 2:

SQL> select regexp_replace('01234abcde56789','[0-9]','*#') as new_str from dual;

将配置到的数字替换为’ *# ’
regexp_replace-2
实验 3:

SQL> select regexp_replace('01234abcde56789','[a-z]') as new_str from dual;

将字符串中的字母去掉(小写字母)
regexp_replace-3

实验 4:

SQL> select regexp_replace('+86 13811112222','(\+[0-9]{2})( )([0-9]{3})([0-9]{4})([0-9]{4})','(\1)\3-\4-\5') as new_str from dual;

格式化手机号,将+86 13811112222转换为(+86)138-1111-2222,’+'在正则里有定义,需转义
regexp_replace-4
实验 5:

SQL> select regexp_replace('01234abcde','(.)','\1 ') from dual;

将字符用空格分隔
regexp_replace-5

  • 其他参数
    实验 6:
SQL>  select regexp_replace('#0a1b2C3D4e#','[0-9a-zA-Z]','*',4) as new_str from dual;

从第4个值开始(包含第4个值),将所有数字、小写字母、大写字母替换为 ’ * ’
regexp_replace-6
实验7:

SQL> select regexp_replace('#01234abcDEFe#','[0-9a-zA-Z]','*',4,6) as new_str from dual;

从第4个值开始(包含第4个值),配置到第6个值时,将其替换为 ’ * ’
regexp_replace-7

实验 8 :

SQL> select regexp_replace('abcdefg','[A-Z]','*',1,0,'i') from dual;

通过i参数,不区分大小写进行匹配
regexp_replace-8
实验 9 :

SQL> select regexp_replace('a
  2  b
  3  c
  4  d
  5  e
  6  f
  7  g','([a-z])(.)','\1',1,0,'n') from dual;

通过n参数使 ’ . ’ 可以匹配换行符,实现合并
regexp_replace-9

实验 10:

SQL> select regexp_replace('aa a a bb b b','a a','0') from dual;

SQL> select regexp_replace('aa a a bb b b','a a','0',1,0,'x') from dual;

对于第一条,匹配的是 ‘a a’
regexp_replace-10-1
对于第二条,匹配的是 ‘aa’
regexp_replace-10-2

由于对于参数 m(将源字符串视为多行)不了解,无法给予合适的说明实验,还望哪位大神出手相助一下

附:正则表达式(POSIX标准扩展正则ERE)

符号释义
\代表它自己、引用下一个字符、引入一个操作符、什么也不做
*匹配零或多个
+匹配一个或多个
?匹配零个或一个
|或运算,其左右操作数均可以为一个子表达式
^默认情况下匹配字符串的开头。在多行模式下,它匹配源字符串中任意位置的行头
$默认情况下匹配字符串的结尾。在多行模式下,它匹配源字符串中任意位置的行尾
.匹配字符集中支持的任意字符,NULL除外
[ ]用于指定匹配列表的括号表达式
( )对表达式进行分组,将其视为单个子表达式
{m}恰好匹配m次
{m,}匹配至少m次
{m,n}匹配至少m次,但不超过n次
\n反向引用表达式(n为1~9)匹配在\n之前的圆括号内包含的第n个子表达式
[. .]指定排序规则,可以是多字符元素(例如,西班牙语中的[.ch.])
[: :]指定字符类(例如,[:alpha:]),它匹配字符类中的任何字符
[= =]指定等价类。(例如,[=a=]匹配索引具有基本字母a的字符)

https://docs.oracle.com/cd/B19306_01/server.102/b14200/ap_posix001.htm#BABJDBHB
以上资料来源于Oracle官网,由本人自行理解翻译,如若有误请指正

[: :]字符类:

[:xxxx:]含义范围
[:space:]包括换行符、空格、tab在内的空白字符tab、空格
[:blank:]空格和tabtab、空格
[:alpha:]字母a-z、A-Z
[:alnum:]字母和数字a-z、A-Z、0-9
[:digit:]十进制数0-9
[:xdigit:]十六进制数0-9、a-f、A-F
[:lower:]小写字母a-z
[:upper:]大写字母A-Z
[:cntrl:]控制字符ctrl、backspace等
[:punct:]标点符号,.?’
OracleREGEXP_REPLACE函数简单用法
itmyhome的专栏
12-24 4万+
REGEXP_REPLACE让你搜索的字符串的正则表达式模式REPLACE函数的功能。默认情况下, 该函数返回source_char与replace_string取代了正则表达式模式的每个实例。 返回的字符串是在相同的字符集source_char。 语法 Oracle数据库中的REGEXP_REPLACE函数的语法是: REGEXP_REPLACE(source_char, pa
Oracle函数大全十:REGEXP_REPLACE函数
yixiaobing的博客
03-17 1421
REGEXP_REPLACE函数为处理字符串中的复杂模式替换提供了强大的功能。需要注意的是,使用正则表达式时,确保模式正确无误,以避免不期望的替换结果。Oracle函数REGEXP_REPLACE用于在字符串中根据正则表达式模式替换子字符串。匹配从字符串开始到最后一个数字字符之前的所有内容,并通过。引用这个最后一个数字字符。在这个例子中,正则表达式。,即最后一个数字字符。函数将这些内容替换为。
MATLAB对txt文件内容提取(文件含中文),使用正则表达式regexp()提取时间戳和数据及contains()函数判断语句是否包含指定内容
最新发布
qq_54700138的博客
08-27 767
做实验生成大量txt文件,放置在同一个文件夹内,要对文件内容中有用数据进行提取,提取到的数据放在excel文件中。
REGEXP_REPLACE函数-ORACLE
wusb5的博客
04-09 8575
REGEXP_REPLACE函数:REGEXP_REPLACE(s1,s2[,s3]) 使用s3字符串替换出现在s1字符串中的所有s2字符串,并返回替换后的字符串;正则表达式替换 select REGEXP_REPLACE(‘aa11234bb我都递收到3112’,’[0-9]’,‘h’) from dual; 将每个数字都替换成h select REGEXP_REPLACE(‘aa11234bb我都递收到3112’,’[^0-9]’,‘h’) from dual; 将非数字替换成h select RE
Oracleregexp_replace函数replace函数
weixin_30485799的博客
08-10 773
replace函数(不知支持正则表达式)语法: replace(原字段,“原字段旧内容“,“原字段新内容“,) select replace(原字段,'原字段旧内容','原字段新内容') from Table regexp_replace函数(是replace函数的扩展函数,用于通过正则表达式来进行匹配替换)例如: --http://egpweb.ybsggzyjyxxw.com/ne...
Oracle regexp_replace函数简单用法
wimpykids的博客
06-17 4193
regexp_replace(1,2,3,4,5,6) 语法说明:1:字段 2:替换的字段 3:替换成什么 4:起始位置(默认从1开始) 5:替换的次数(0是无限次) 6:不区分大小写 【补充:】用regexp_replace来判断oracle中的某列为数字的: SELECT(REGEXP_REPLACE('LSS12345', '[^0-9]')) FROM DUAL;---取出值里面的全部数字 SELECT LENGTH('LSS12345'),LENGTH(REGEXP_RE...
Oracle正则表达式函数详解regexp_substr的用法及特点
正则规则函数Oracle数据库中一种强大的文本处理工具,它扩展了标准的SQL函数,如LIKE、INSTR、SUBSTR和REPLACE,以便支持POSIX(Portable Operating System Interface for Regular Expressions)正则表达式。...
oracle正则表达式regexp_like的用法详解
12-16
1,REGEXP_LIKE :与LIKE的功能相似2,REGEXP_INSTR :与INSTR的功能相似3,REGEXP_SUBSTR :与SUBSTR的功能相似4,REGEXP_REPLACE :与REPLACE的功能相似它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和...
oracle中匹配函数怎么用,Oracle中的正则表达式(及函数)详解
weixin_42398050的博客
04-03 1231
运算符在介绍函数前,这里先说明一下Oracle中正则表达式运算符及其描述。如果不知道他们有什么用,或者也不知道描述说的是什么,没关系,可以先看后面的介绍,就知道他们的含义了。图片.pngoracle 正则表达式 匹配ORACLE中的支持正则表达式的函数主要有下面四个:REGEXP_LIKE :与LIKE的功能相似REGEXP_INSTR :与INSTR的功能相似REGEXP_SUBSTR :与SU...
Oracle分析函数详解:概念、语法与Regexp函数应用
- regexp_replace:替换字符串中符合正则表达式的部分。 - regexp_count:计算字符串中匹配正则表达式的子串数量。 这些分析函数和正则表达式函数在处理大量数据时能提供强大的功能,帮助开发人员进行高级的数据...
Oracle函数详解:ASCII, CHR, CONCAT, INITCAP, INSTR等
"Oracle函数大全" 在Oracle数据库中,函数SQL查询的重要组成部分,它们用于处理和转换数据。以下是一些常见的Oracle函数的详细介绍: 1. ASCII 函数 ASCII函数返回一个字符对应的ASCII码(十进制数字)。例如,...
Oracle函数4—字符替换(replce、regexp_replace、translate)
weixin_45176509的博客
01-16 1万+
1.replace (1)语法:REPLACE(char, search_string,replacement_string) (2)用法: –将char中的字符串search_string全部转换为字符串replacement_string; –当replacement_string为null时,相当于剔除search_string中的search_string字段。 (3)举例 --将name字段中name为李明的数据中的‘李’替换为‘唐’ select replace(name,'李','唐') f
ORACLE函数REGEXP_REPLACEreplace,instr,substr(待更新)
weixin2006的博客
12-04 864
od.remark=‘05|01000016|20192020120|6222024********2135|||||||||3085840|5840|招商银丰城支行|6225847487548754|Auto测试贰叁捌|||Y|1.06|JS|11|308584001602|0.0||’ REGEXP_REPLACE(replace( case when substr(od.remark, in...
oracle REGEXP_REPLACE
a2686872165的博客
03-28 114
参数: 第一个是输入的字符串 第二个是正则表达式 第三个是替换的字符 第四个是标识从第几个字符开始正则表达式匹配。(默认为1) 第五个是标识第几个匹配组。(默认为全部都替换掉) 第六个是是取值范围: 例: 字段:zcbh LZWSO1489 LZWSO1487 LZWSO1486 要求所有 编号中 O 字母 变为 0 update wz_daxx set z...
oracle regexp_replace函数
赠人玫瑰,手留余香.
10-17 2187
update t_Guideword set title =  regexp_replace(title, '导游词$', null)  http://www.itpub.net/thread-1690590-1-1.html
REGEXP_REPLACE 函数
热门推荐
gxftry1st的专栏
03-29 19万+
REGEXP_REPLACE 函数  让我们首先看一下传统的 REPLACE SQL 函数,它把一个字符串用另一个字符串来替换。假设您的数据在正文中有不必要的空格,您希望用单个空格来替换它们。利用 REPLACE 函数,您需要准确地列出您要替换多少个空格。然而,多余空格的数目在正文的各处可能不是相同的。下面的示例在 Joe 和 Smith 之间有三个空格。REPLACE 函数的参数指定要用一个空
Oracle Regexp_Replace
congsong2560的博客
07-21 255
SELECT regexp_replace('13,453,5', '([0-9]{2,3})', '''\1''') FROM dual; SQL> SELECT regexp_replace('13,453...
Oracleregexp_replace正则表达式函数的使用
weixin_34281477的博客
05-03 395
函数的参数说明: 一共6个参数,分别是 1、待匹配的字符串2、正则表达式3、替换的字符4、标识从第几个字符开始正则表达式匹配。(默认为1)5、标识第几个匹配组。(默认为全部都替换掉)6、取值范围:i:大小写不敏感;c:大小写敏感;(默认)n:不匹配换行符号;m:多行模式;x:扩展模式,忽略正则表达式中的空白字符。创建表,插入临时测试数据:SQL> conn xzh/...
oracle正则表达式函数REGEXP_REPLACEREGEXP_SUBSTR
lzhdim的专栏
12-24 434
前面我们介绍了oracle中正则表达式的基本元字符和常用的两个函数regexp_like 和 regexp_instr。这里我们再继续介绍剩下的两个正则表达式函数regexp_replaceregexp_substr。 regexp_replace函数regexp_substr函数的功能类似与字符函数replace和substr,只是这里的应用更加灵活,可以一下子匹配一系列的结果,而原来的函...
写文章

热门文章

  • Oracle函数详解:regexp_replace 65486
  • Oracle单实例通过DG迁移至RAC集群(Oracle 11g 超详细文档) 5429
  • 记一次 MSSQL [SQLServer] 中更新排序序号的问题 2500
  • mysqldump: Error 2020 2031
  • 记一次 Zabbix 监控的部署(Installation from packages) 1379

分类专栏

  • Oracle 3篇
  • SQL 1篇
  • 读书笔记
  • MySQL 2篇
  • 监控 3篇
  • MSSQL

最新评论

  • Oracle函数详解:regexp_replace

    yaojinxinag: 实验七当中的那个我怎么看不懂,不是从第四个值到第六个值都应该变成*吗?我看到结果只有9变了

  • 记一次 MSSQL [SQLServer] 中更新排序序号的问题

    m0_57324911: 谢谢你,找了好久没找到怎么在sqlserver实现自动更新排名!

  • Oracle函数详解:regexp_replace

    术士起个门: 是,我更正一下

  • Oracle函数详解:regexp_replace

    weixin_49513759: 66666666

最新文章

  • Oracle访问MySQL数据库 -- 透明网关
  • 记一次 MSSQL [SQLServer] 中更新排序序号的问题
  • 记一次 Zabbix 插件 -- orabbix 插件的部署
2019年7篇
2018年1篇

目录

目录

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家菜园玻璃钢花盆深圳特色商场美陈供应商宁波专业玻璃钢雕塑镇江秋季商场美陈兰溪玻璃钢雕塑厂商销售北海玻璃钢雕塑厂家北海玻璃钢座椅雕塑厂家台州特色玻璃钢雕塑订做价格酒店玻璃钢花盆定制上海玻璃钢雕塑雕塑公司品质玻璃钢卡通雕塑制作无锡玻璃钢雕塑结构玻璃钢花箱需要放花盆吗乌鲁木齐市玻璃钢雕塑厂电话玻璃钢电影动漫雕塑厂家定制佛山玻璃钢卡通雕塑模型厂家毕节商场美陈订制玻璃钢雕塑酒店滁州玻璃钢雕塑人物设计呈贡玻璃钢雕塑贵不贵苏州玻璃钢马雕塑设计中山党建文化玻璃钢人物雕塑西安欧式玻璃钢雕塑定做价格常德玻璃钢浮雕人物山水雕塑欧式风格玻璃钢雕塑大卫雕塑南宁个性化玻璃钢雕塑设计大型主题商场美陈哪里有玻璃钢红军主题雕塑无锡商场美陈制作玻璃钢花盆会变形吗香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化