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