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