日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle translate using,oracle translate() 详解

發布時間:2023/12/16 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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() 详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。