1. 程式人生 > >oracle中的替換函數replace和translate函數

oracle中的替換函數replace和translate函數

轉換成 www char 總結 就是 cnblogs lec replace html

1.translate
語法:TRANSLATE(char, from, to)
用法:返回將出現在from中的每個字符替換為to中的相應字符以後的字符串。
            若from比to字符串長,那麽在from中比to中多出的字符將會被刪除。
            三個參數中有一個是空,返回值也將是空值。
舉例:SQL> select translate(abcdefga,abc,wo) 返回值 from dual;
            返回值
            -------
            wodefgw
分析:該語句要將
abcdefga中的abc轉換為wo, 由於abca對應wo中的w, 故將abcdefga中的a全部轉換成w; 而abcb對應wo中的o, 故將abcdefga中的b全部轉換成o; abc中的cwo中沒有與之對應的字符, 故將abcdefga中的c全部刪除; 簡單說來,就是將from中的字符轉換為to中與之位置對應的字符, 若to中找不到與之對應的字符,返回值中的該字符將會被刪除。 在實際的業務中,可以用來刪除一些異常數據, 比如表a中的一個字段t_no表示電話號碼, 而電話號碼本身應該是一個由數字組成的字符串, 為了刪除那些含有非數字的異常數據, 就用到了translate函數: SQL
> delete from a, where length(translate(trim(a.t_no), 0123456789 || a.t_no, 0123456789)) <> length(trim(a.t_no)); 2.replace 語法:REPLACE(char, search_string,replacement_string) 用法:將char中的字符串search_string全部轉換為字符串replacement_string。 舉例:SQL
> select REPLACE(fgsgswsgs, fk ,j) 返回值 from dual; 返回值 --------- fgsgswsgs SQL> select REPLACE(fgsgswsgs, sg ,eeerrrttt) 返回值 from dual; 返回值 ----------------------- fgeeerrrtttsweeerrrttts 分析:第一個例子中由於fgsgswsgs中沒有與fk匹配的字符串, 故返回值仍然是fgsgswsgs; 第二個例子中將fgsgswsgs中的字符串sg全部轉換為eeerrrttt。 總結:綜上所述,replace與translate都是替代函數, 只不過replace針對的是字符串,而translate針對的是單個字符。

轉自:https://www.cnblogs.com/xiaoqisfzh/p/5620890.html

oracle中的替換函數replace和translate函數