1. 程式人生 > 其它 >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中的等式成立;
 
原文連結:https://blog.csdn.net/qq_35943977/article/details/77526910