Oracle PL/SQL: 另一種取代字串的函數 - translate

之前有寫過, 在 Oracle Database 中用 replace 替換字串 (請看這裡).

目前大都也都使用 replace,範例如下:
 程式碼
select replace('abcde', 'abc', '123')
from dual;

-- 結果: 123de

但若想把 abcde 字串中的 a to 1, c to 2, e to 3,以往做法如何呢 ?
 程式碼
select replace( replace( replace ('abcde', 'a', '1'), 'c', '2'), 'e', '3' )
from dual;

-- 結果: 1b2d3
-- 但需要三層 replace 才可替換


translate 替換剛才的需求 :
 程式碼
select translate ('abcde', 'ace', '123')
from dual;

-- 結果: 1b2d3
-- 只需一個 translate 即可.


再來看看 translate 的其他應用 :
 程式碼
select translate ('abcde', 'ace', '12')
from dual;

-- 結果: 1b2d
-- 因為沒有指定 e 的替換字元,所以 e 就不見了.

Related Posts Plugin for WordPress, Blogger...