replace就是一般意義上的字符串替換
replace(c1,c2[,c3])
在字符串c1中找到字符串c2,替換成c3。若c3為空,則在c1中刪除所有c2。
update jd set id = replace(id,'1','2');
含義就是將jd表中id列中的所有1換為2.
translate只是一個字符替換對應的一個字符
TRANSLATE ( expr , from_string , to_string )
簡單的說就是對expr內容,用to_string中的字符逐一替換from_string 中的字符
select translate('123456789','456','abc') from dual; 123abc789 select translate('123456789','456','ab') from dual; 123ab789 select translate('123456789','4564','a') from dual; 123a789 select translate('123456789','4564','abcd') from dual; 123abc789 select TRANSLATE('kkaxksx', 'kx', '12') from dual 11a21s2
translate中有“#”的特殊用法,以#開頭的表示所有字符
translate的主要作用是提取,替換字符串,其作用有時候和replace差不多.具體看下面的例子
select translate('liyan4h123ui','#liyanhui','#') from dual 4123 select translate('liyan4h123ui','#liyanhui','#z') from dual; z4123 select translate('liyan4h123ui','#liyanhui','#zx') from dual; zx4123x select translate('asadad434323', '#0123456789','#') from dual ; asadad利用TRANSLATE實現關鍵字的過濾
有時候需要對一些關鍵詞語進行過濾,直接使用replace的話,可能由於這些關鍵詞語比較多而要嵌套使用,語句也不好寫,同時也浪費資源。這種情況其實可以使用TRANSLATE和replace組合使用就能完全達到目的了。
比如要將“深圳”、“北京”等作為關鍵詞語,在顯示內容是要將這些詞語過濾掉不顯示:
--首先使用TRANSLATE將關鍵詞語統一轉換成一個特殊的字符串,比如這裡的X select TRANSLATE('上海北京天津重慶廣州深圳武漢','深圳北京','XXXX') from dual; 上海XX天津重慶廣州XX武漢 select replace(TRANSLATE('上海北京天津重慶廣州深圳武漢','深圳北京','XXXX'),'X') from dual; 上海天津重慶廣州武漢 select TRANSLATE('上海京天津重慶北廣州深圳武漢','深圳北京','XXXX') from dual; 上海X天津重慶X廣州XX武漢