欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle中特殊字符替换

程序员文章站 2022-06-05 21:13:42
replace语法: REPLACE(char,search_string,[replacement_string]) 在replace中,每个search_String 都会被replacement_string替换掉,而replacement_string可以为null或者空字符串,search ......

replace语法:

replace(char,search_string,[replacement_string])

 在replace中,每个search_string 都会被replacement_string替换掉,而replacement_string可以为null或者空字符串,search_string会被移除,而如果search_string为空字符串时,会返回原来的字符串。

①当replacement_string=null或者replacement_string=‘’:

select replace('helloword','','l') from dual;

----------
helloword

②当search_string=‘’:

select replace('helloword','','l') from dual;

----------
helloword

③没有缺省值或空值情况:

select replace('helloword','e','l') from dual;
----------
hllloword

translate语法:

translate(char,from_string,to_string)

返回出现在from_string中每个字符将会被to_string相对应的字符所替代,而且三个字符串都不可以为null或空字符串,当任意一个为空字符串时,返回为null。

①正常情况下:

select translate('asdfg','as','qw') from dual;

----------
qwdfg

②from_string字符数量大于to_string:多余部分会被删掉:

select translate('asdfg','asc','qw') from dual;
-----
qwdfg

③from_string字符数量小于to_string:对应字符被替代,剩余部分不变:

select translate('asdfg','a','qw') from dual;

----------
qsdfg

④from_string或者to_string为空字符串,将得到空值:

1 select translate('asdfg','','qw') from dual;
2 select translate('asdfg','as','') from dual;
3 
4 ----------
5 (null)

特殊字符替换:

用translate()函数把能替换掉的特殊字符放在from_string中,而to_from中仅填一个空格字符,也就是把字符串char中第一个from_string中的符号用空格字符代替,剩下的所有特殊字符都会被删掉,

剩下的问题就是解决一下空格的问题,空格我是用replace()函数替换掉的,所以替换掉特殊符号以及空格整体如下:只要在from_string中添加想要去掉的特殊符号就可以!

1 translate(char,'$/\:*?"<>''|;[]{},.():;‘’“”【】《》,。()?、',' ');
2 
3 select replace(translate('char','$/\:*?"<>''|;[]{},.():;‘’“”【】《》,。()?、',' '),' ','') from dual;

注意点:

①中英文符号一定要注意区分!比如中文的双引号,单引号,都是不一样的。
②oracle中单引号的问题,需要用一个单引号转义,下一个单引号才能代表的是单引符号,用代码说明一下:

1 select 'hello'' word' from dual;
2 
3 ----------
4 hello' word

一共四个单引号,第一个跟第四个代表的是字符串的引号,第二个带引号视为转义下一个单引号,第三个单引号才是我们真正想要的输出的单引号。所以在替换掉单引号这个特殊符号,我们在from_string中一定要转义。

1 select translate('hello'' word','''','^') from dual;
2 
3 ------
4 hello^ word