sql中translate與replace 的區別

2021-08-28 15:03:45 字數 1400 閱讀 2743

1.translate

語法:translate(char, from, to)

用法:返回將出現在from中的每個字元替換為to中的相應字元以後的字串。

若from比to字串長,那麼在from中比to中多出的字元將會被刪除。

三個引數中有乙個是空,返回值也將是空值。

舉例:sql> select translate('abcdefga','abc','wo') 返回值 from dual;

返回值wodefgw

分析:該語句要將'abcdefga'中的'abc'轉換為'wo',

由於'abc'中'a'對應'wo'中的'w',

故將'abcdefga'中的'a'全部轉換成'w';

而'abc'中'b'對應'wo'中的'o',

故將'abcdefga'中的'b'全部轉換成'o';

'abc'中的'c'在'wo'中沒有與之對應的字元,

故將'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針對的是單個字元。

sql中translate與replace 的區別

sql中translate與replace 的區別 1.translate 語法 translate char,from,to 用法 返回將出現在from中的每個字元替換為to中的相應字元以後的字串。若from比to字串長,那麼在from中比to中多出的字元將會被刪除。三個引數中有乙個是空,返回值也...

translate 與 相對 絕對定位

垂直水平居中是日常前端開發當中乙個常見的需求,在支援 css3 屬性的現代瀏覽器當中,有乙個利用 css3 屬性的垂直水平居中方法 position absolute translate translate translate translate 例子傳送門 請用現代瀏覽器開啟 從上面的例子看到,無...

oracle 中translate的基本用法

1.translate 與replace類似是替換函式,但translate是一次替換多個單個的字元。2.基本用法,字元對應替換。例子 select translate 1234567 123 abc from dual 1替換為a,2替換為b,3替換為c 結果 abc4567 3.如果 沒有對應字...