oracle translate using,oracle translate() 详解
一、語法:
TRANSLATE(string,from_str,to_str)
二、目的
返回將(所有出現的)from_str中的每個字符替換為to_str中的相應字符以后的string。TRANSLATE 是 REPLACE 所提供的功能的一個超集。
如果 from_str 比 to_str 長,那么在 from_str 中而不在 to_str 中的額外字符將從 string 中被刪除,因為它們沒有相應的替換字符。
to_str 不能為空。Oracle 將空字符串解釋為 NULL,并且如果TRANSLATE 中的任何參數為NULL,那么結果也是 NULL。
三、允許使用的位置
過程性語句和SQL語句。
四、示例
示例一、select translate('abcbbaadef','ba','#@') from dual (b將被#替代,a將被@替代)
select translate('abcbbaadef','bad','#@') from dual (b將被#替代,a將被@替代,d對應的值是空值,將被移走)
因此:結果依次為:@#c##@@def 和@#c##@@ef
示例二、將數字轉換為9,其他的大寫字母轉換為X,然后返回。
SELECT TRANSLATE('2KRW229','0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ','9999999999XXXXXXXXXXXXXXXXXXXXXXXXXX')
as ?"License" FROM DUAL;
結果:
License
--------
9XXX999
示例三、將數字保留,將其他的大寫字母移除??? SELECT TRANSLATE('2KRW229','0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ','0123456789')
as?? "Translate example" FROM DUAL;
結果:
Translate example
-----------------
2229
示例四:示例證明是按照字符來處理,不是按照字節來處理,如果to_string的字符數比from_string多的話,
多出的字符數似乎沒有什么用處,也不會引發異常。
a.SELECT TRANSLATE('我是中國人,我愛中國', '中國', 'China')
as ? "Translate example" FROM DUAL;
--用TRANSLATE是以一個字符為單位的,只要匹配到都會轉換。比如不管“北”和“京”是否連接在一起都會做轉換?????? b.select TRANSLATE('上海京天津重慶北廣州深圳武漢','深圳北京','XXXX') from dual;
結果:上海X天津重慶X廣州XX武漢
示例五:下面的示例證明,如果from_string的字符數大于to_string,那么多出的字符會被移除,
也就是ina三個字符會從char參數中移除,當然區分大小寫啦。
SELECT TRANSLATE('I am Chinese, I love China', 'China', '中國')
as "Translate example" FROM DUAL;
示例六:以下示例證明,如果第二個參數為空字符串,整個返回null。
SELECT TRANSLATE('2KRW229','0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ','')
as ?"License"? FROM DUAL;
示例七:在銀行轉帳時經常看見賬戶人只顯示姓名的最后一個字,其余的用星號代替,我就用translate來做個類似的東西吧。
SELECT TRANSLATE('中國人',substr('中國人',1,length('中國人') - 1),rpad('*',length('中國人'),'*'))
as "License"? FROM DUAL;
五、translate中有“#”的特殊用法,以#開頭的表示所有字符
select translate('liyan4h123ui','#liyanhui','#') from dual
結果:4123
select translate('liyan4h123ui','#liyanhui','#z') from dual;
結果:z4123
select translate('liyan4h123ui','#liyanhui','#zx') from dual;
結果:zx4123x
select translate('asadad434323', '#0123456789','#') from dual ;
結果:asadad
補充:TRANSLATE(string,from,to)轉換的兩個注意點—— 1、轉換源字串(from)在目的字串(to)中不存在對應,則轉換后被截除 2、轉換目的字串(to)不能為'',''在oracle中被視為空值,因此無法匹配而返回為空值 另外,一個漢字作為一個字符還是兩個字符進行轉換與字符集的設置相關。
總結
以上是生活随笔為你收集整理的oracle translate using,oracle translate() 详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是前贴片、中贴片和后贴片广告?它们分
- 下一篇: LaTeX 公式(转自)Iowa_Bat