1. 程式人生 > >Oracle之translate及replace函式用法總結

Oracle之translate及replace函式用法總結

1、translate的用法

  作用:translate的主要作用是提取,替換字串,其作用有時候和replace差不多。

  語法:TRANSLATE(char, from_string, to_string)

  對於char字串引數中的每一個字元,如果該字元在 from_string引數中存在,則替換為對應的

   to_string引數中的字元,然後返回替換後的值。

注:

a、對於char字串引數中的字元沒有出現在from_string引數中則不用替換。

b、引數from_string中的字元個數多於to_string引數中的字元個數時,那麼多出的字元

     就沒有對應的字元來替換,這些字元就會從char引數中移除。

c、如果這個函式中任何一個引數為null,那麼將返回null。

d、該函式不能直接作用於CLOB資料型別,可以通過將CLOB資料型別轉換為字串。

e、translate中有“#”的特殊用法,以#開頭的表示所有字元 。

示例1:  

 select translate('abcdefga','abc','wo') 返回值 from dual;
 返回值
 wodefgw

示例2:

在實際的業務中,可以用來刪除一些異常資料,比如表a中的一個欄位t_no表示電話號碼,

而電話號碼本身應該是一個由數字組成的字串,為了刪除那些含有非數字的異常資料,

就用到了translate函式:

 delete from a where length(translate(trim(a.t_no),
                                            '0123456789' || a.t_no,
                                            '0123456789')) <> length(trim(a.t_no));
示例3:
select translate('abcd4e123fg','#abcdefg','#') from dual   
--結果:4123     
select translate('abcd4e123fg','#abcdefg','#z') from dual;   
--結果:z4123    
select translate('abcd4e123fg','#abcdefg','#zx') from dual;   
--結果:zx4123     
select translate('abcdefg434323', '#0123456789','#') from dual ;  
--結果:abcdefg 
示例4:
數字保留,字元全部移除:
SELECT TRANSLATE('2KRW229',
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'0123456789') "Translate example"
FROM DUAL
示例5:
給指定字元打*號:
SELECT TRANSLATE('浙江省', substr('浙江省',1,length('浙江省') - 1), rpad('*',length('浙江省'),'*'))sf  
FROM DUAL;
2、replace的用法

語法:REPLACE(char, search_string,replacement_string)

作用:實現關鍵字的過濾。

用法:將char中的字串search_string全部轉換為字串replacement_string。

示例:

舉例:
select REPLACE('abcdefg', 'ab' ,'g') 返回值 from dual;
返回值
gcdefg
select REPLACE('abcdefg', 'ab' ,'rt') 返回值 from dual;
返回值
rtcdefg