oracle替换子字符串,oracle字符/字符串替换

在ORACLE中的字符串替换 replce、regexp_replace 和 translate函数,下面我来给大家介绍一下。

在ORACLE中的字符串替换 replce、regexp_replace 和 translate函数,下面我来给大家介绍一下。

一、语法

repalce(str_source,str1,str2) 把 str_source 中 str1 字符串替换为 str2 字符串,当 str2 为 null 或” 时,与下个作用相同

replace(str_source,str1) 把str_source 中的 str1 字符串剔除

regexp_replace(str_source,pattern_str,rep_str) 支持正则表达式,用法类似于 replace,但功能更强大

regexp_replace(str_source,pattern_str) 把 str_source 中的 pattern_str 字符串剔除

translate(str_source,chr1,chr2) 以字符为单位,把 str_source 中的 chr1 字符对应替换为 chr2。如果 chr1 比chr2 长,那么在 chr1 中而不在 chr2 中的字符将被剔除,因为没有对应的替换字符。需注意 chr2 不能为 null 或”,否则返回值也为空

REPLACE 函数是用另外一个值来替代串中的某个值。例如,可以用一个匹配数字来替代字母的每一次出现。REPLACE 的格式如下所示:

1.REPLACE ( char, search_string [, replace_string]) 如果没有指定replace_string 变量的值,那么当发现search_string 变量的值时,就将其删除。输入可以为任何字符数据类型——CHAR、VARCHAR2、NCHAR、NVARCHAR2、CLOB或NCLOB。

————————————————————————————————–

2、REGEXP_REPLACE 函数在几个方面扩展了REPLACE 函数的功能。它支持在搜索模式中使用正则表达式,也支持本章前面描述的变量,即position、occurrence 和match_parameter,从而可以选择只替代某些匹配的值,或者不区分大小写。

代码如下

复制代码

REGEXP_REPLACE( source_string, pattern

[, replace_string

[, position

[, occurrence

[, match_parameter ]

]

]

]

)

除了replace_string,这里所有的变量都已经在本章前面章节作了介绍。replace_string 告诉Oracle 用什么来替代source_string 中与pattern 匹配的部分。occurrence 变量是一个非负整数,它指定操作的次数:如果为0,则所有的匹配项都被替代;如果指定一个正数,则Oracle替代第n 次匹配。

代码如下

复制代码

1.select REGEXP_SUBSTR (Phone,

2.'([[:digit:]]{3})-([[:digit:]]{3})-([[:digit:]]{4})’

3.) “REGEXP_SUBSTR”

4.from ADDRESS;

5.REGEXP_SUBST

6.————

7.213-555-0223

8.415-555-7530

实例

SQL> select replace(‘4683,968,969′,’,’,’$’) from dual;

REPLACE(‘4683,968,969′,’,’,’$’

——————————

4683$968$969

SQL> select to_number(‘520’) from dual;

TO_NUMBER(‘520’)

—————-

520

————————————————————————————————————

3、一个字符替换函数translate,不同于replace函数的是,translate函数是字符级别的替换,而不是字符串的替换。

其语法如下:

TRANSLATE ( expr , from_string , to_string )

简单的说就是对expr内容,用to_string中的字符逐一替换from_string 中的字符,举例说明如下:

代码如下

复制代码

SQL> select translate(‘123456789′,’456′,’abc’) from dual;

TRANSLATE

———

123abc789

SQL> select translate(‘123456789′,’456′,’ab’) from dual;

TRANSLAT

——–

123ab789

SQL> select translate(‘123456789′,’4564′,’a’) from dual;

TRANSLAT

——-

123a789

select translate(‘abcc123a’,’abc’,’-+=’),translate(‘abcc123a’,’abc’,’-+’),translate(‘abcc123a’,’#abc’,’#’) from dual;

TRANSLATE(‘ABCC123A’,’ABC’,’-+ TRANSLATE(‘ABCC123A’,’ABC’,’-+ TRANSLATE(‘ABCC123A’,’#ABC’,’#

—————————— —————————— ——————————

-+==123- -+123- 123

1、用字符’-‘、’+’、’=’对应替换’a’,’b’,’c’字符;

2、’abc’长度为 3,’-+’长度为 2,字符’c’没有对应的字符来替换,因此被剔除掉;

3、剔除掉字符’a’、’b’、’c’,translate 有 # 的特殊用法,以 # 开头的表示所有字符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值