天天看點

oracle 中translate的基本用法

oracle 中translate的基本用法

1.translate 與replace類似是替換函數,但translate是一次替換多個單個的字元。

2.基本用法,字元對應替換。

例子:

select translate(‘1234567’,‘123’ ,‘abc’) from dual ;–1替換為a,2替換為b,3替換為c

結果:abc4567 。

3.如果 沒有對應字元則替換為null;

select translate(‘1234567’,‘123’ ,‘ab’) from dual;–3替換為null;

結果:ab4567.

4.如果對應字元過多,不影響

select translate(‘1234567’,‘123’ ,‘abccd’) from dual;

結果:abc4567

5.如果替換字元整個為空字元 ,則直接傳回null

select translate(‘1234567’,‘123’ ,’’) from dual;

結果:null;

6.如果想篩掉對應字元,應傳入一個不相關字元,同時替換字元也加一個相同字元;

select translate(‘1234567’,’&123’ ,’&’) from dual;

結果:4567;

7,如果相同字元對應多個字元,按第一個;

select translate(‘12334567’,‘1233’ ,‘abcd’) from dual;

結果:abcc4567;

8,如果想保留某些特定字元篩選掉其他的,比如篩掉漢字保留數字

先把數字篩選掉,

select translate(‘你師看了3三樓2的6開8發’,’#0123456789’ ,’#’) from dual

再用篩選出的漢字去篩選原來的語句留下數字,

select translate(‘你師看了3三樓2的6開8發’,’#’||translate(‘你師看了3三樓2的6開8發’,’#0123456789’ ,’#’),’#’) from dual;

結果:3268;

9,還有其他靈活用法,比如我可以判斷兩個字元串如果:字元串都是數字字元,然後數字字元的順序不同,且每個字元隻出現一次,

我可以判斷他們包含的數字是不是完全一緻;

比如比較123 和132;

select 1 from dual where

translate(‘0123456789’,‘123’ ,‘aaaaaaaaaa’) =translate(‘0123456789’,‘132’ ,‘aaaaaaaaaa’)

結果:1 ,也就是where中的等式成立;

以上就是我常用的一些用法;僅供參考。