Oracle translate 函數的用法, 以及和replace的區別

來源:互聯網
上載者:User

標籤:blog   os   strong   div   ar   oracle   log   har   

 translate 是用來替換字元的函數

文法:

          translate(char, from_str,to_str)

 

其中,char是待處理的字串.

               from_str是按順序排列若干個要被替換的字元集合,注意是字元集合而不是字串。

               to_str 是按順序對應from_str要被替換成的字元集合。

 

例如:

              translate(‘abcd‘,‘ab‘,‘AB‘) 

  執行上面語句後, ‘abcd‘中的‘a‘ 被‘A‘替換,  ‘b‘被‘B‘替換。所以返回"ABcd"

 

 

這樣看上去跟replace函數很類似。

 

 

但是,在

           replace(‘abcd‘,‘ab‘,‘AB‘) 語句中,   是把‘abcd‘中的 ‘ab‘ 整個字串替換成‘AB‘,  應該能看出與上面translate的區別了吧。

舉個例子

          translate(‘acbd‘,‘ab‘,‘AB‘)  會返回"AcBd" ,因為‘a‘ 被‘A‘替換,  ‘b‘被‘B‘替換嘛,替換是每1個字元單獨處理的。

          而 replace(‘acbd‘,‘ab‘,‘AB‘)  則返回"acbd”, 因為字串‘ab‘找不到啊, 所以沒有做到替換處理。

 

下面寫一些translate的一些要注意的特性。

       

1.

translate(‘abcd‘,‘abc‘,‘A‘) 中,    字元a會被‘A‘替換, 而b與c則沒有指定替換成什麼,oracle會預設替換成null。所以返回‘Ad‘.

 

 

2.

translate(‘abcd‘,‘abc‘,‘‘) 中, 連A被替換的字元也被省略掉了,是不是因為abc 3個 字元都被替換成null,所以返回d呢?

答案是錯的, 如果to_str是blank(‘‘)或者null,則所有字元都會替換成null, 所以這個運算式返回null.

 

 

 

3.translate有許多特別的用途,

例如 我想將1個字串內的數字全部去掉,則可以用
          

translate(str,‘a1234567890‘,‘a‘)

這樣的話字串的a(如果存在的話)會被替換成自己a,而其他數字會替換成null,注意是null而不是空格啊。

或者

translate(str,‘ 1234567890‘,‘ ‘)

用空格來代替上面的‘a‘也ok,注意from_str和to_str都是以空格開頭啊。

 

 

而不能用

translate(str,‘1234567890‘,‘‘) ,  參考上面的特性2,會返回null的啊。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.