oracle TRANSLATE函式詳解

perfychi發表於2013-08-09

TRANSLATE返回將from_string中的每個字元替換為to_string中的相應字元以後的string。

TRANSLATE是REPLACE所提供的功能的一個超集。如果from_string比to_string長,那麼在from_string中而不在to_string中的額外字元將從char中被刪除,因為它們沒有相應的替換字元。to_string不能為空。將空字串解釋為NULL,並且如果TRANSLATE中的任何引數為NULL,那麼結果也是NULL。


舉個例子

  select translate('123abc','2dc','4e') from dual;

  因為from_string和to_string的位置是一一對應的,2對應4,d對應e,c沒有對應的值,所以c應該會被刪除。

所以例子的字元裡的2會替換為4,

d因為字串裡沒有,所以不作替換,

c由於沒有對應的替換字元,所以字串裡的c會被刪除

那麼可以得出,結果是

143ab


to_string為空的情況:

SQL> select '-' || translate('123ab_c','_','') || '-' from dual;

'-
--
--

如同:

select '-' || NULL ||  '-'  from dual;

'-
--
--


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27042095/viewspace-768136/,如需轉載,請註明出處,否則將追究法律責任。

相關文章