oracle字符/字符串替换
2010-12-30 12:11
369 查看
select REGEXP_REPLACE( '00000921000001 ', '921', '924') from dual;
select REPLACE( '00000921000001 ', '921', '924') from dual;
select translate( '00000921000001 ', '921', '924') from dual;
REPLACE 函数是用另外一个值来替代串中的某个值。例如,可以用一个匹配数字来替代字母的每一次出现。REPLACE 的格式如下所示:
如果没有指定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 次匹配。
select REGEXP_SUBSTR (Phone,
'([[:digit:]]{3})-([[:digit:]]{3})-([[:digit:]]{4})'
) "REGEXP_SUBSTR"
from ADDRESS;
REGEXP_SUBST
------------
213-555-0223
415-555-7530
------------------------------------------------------------------------------------------------------------
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
SQL> select translate('123456789','4564','abcd') from dual;
TRANSLATE
---------
123abc789
可以看到translate函数是以字符为单位逐一替换的,从第二、三个例子可以看出,如果第三个参数to_string的长度小于第二个参数from_string,那么from_string的后边超出的部分都被替换为空值。从第三、四个例子可见,如果某一个字符多次出现,则以第一次替换的内容为准。
以此可以实现的一个有用的功能是统计一个字符串中某个字符出现的次数:
select length(translate('expl','x'||'expl','x')) from dual 结果为:1
select REPLACE( '00000921000001 ', '921', '924') from dual;
select translate( '00000921000001 ', '921', '924') from dual;
REPLACE 函数是用另外一个值来替代串中的某个值。例如,可以用一个匹配数字来替代字母的每一次出现。REPLACE 的格式如下所示:
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 次匹配。
select REGEXP_SUBSTR (Phone,
'([[:digit:]]{3})-([[:digit:]]{3})-([[:digit:]]{4})'
) "REGEXP_SUBSTR"
from ADDRESS;
REGEXP_SUBST
------------
213-555-0223
415-555-7530
------------------------------------------------------------------------------------------------------------
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
SQL> select translate('123456789','4564','abcd') from dual;
TRANSLATE
---------
123abc789
可以看到translate函数是以字符为单位逐一替换的,从第二、三个例子可以看出,如果第三个参数to_string的长度小于第二个参数from_string,那么from_string的后边超出的部分都被替换为空值。从第三、四个例子可见,如果某一个字符多次出现,则以第一次替换的内容为准。
以此可以实现的一个有用的功能是统计一个字符串中某个字符出现的次数:
select length(translate('expl','x'||'expl','x')) from dual 结果为:1
相关文章推荐
- Oracle将字符串转换为数字,并替换特殊字符
- oracle字符/字符串替换
- Oracle将字符串转换为数字,并替换特殊字符
- Oracle 使用TRANSLATE函数替换字符串中的字符
- C# 用正则表达式替换字符串中所有特殊字符
- oracle中实现截取字符串(substr)、查找字符串位置(instr)、替换字符串(replace)
- C#对于字符串的处理类(剪裁、过滤危险字符、替换sql中有问题符号等)
- 在JS中,使用正则表达式,用指定字符替换字符串前后空格
- oracle clob 存储大于4000字符的字符串
- Mysql字符串中字符替换
- PHP处理中文字符串中的特殊字符解决Oracle插入报错的问题
- 如何把字符串中的回车空格替换成其他的字符
- JS 字符串字符替换(replaceAll)
- JS 字符串操作函数 往指定位置插入字符 删除指定位置字符 替换指定位置字符
- 将一个字符串中的空格字符替换成另外一个字符串
- oracle操作字符串:拼接、替换、截取、查找
- substr_replace()—替换字符串中某些字符
- Oracle中截取字符串,Oracle按照某个字符截取字符串的示例
- El表达式截取字符串-替换字符-等
- 字符串中的部分字符替换