Oracle translate 函数的用法, 以及和replace的区别
translate 是用來替換字符的函數(shù)
語法:
???????? ?translate(char, from_str,to_str)
?
其中,char是待處理的字符串.
?????????????? from_str是按順序排列若干個要被替換的字符集合,注意是字符集合而不是字符串。
?????????????? to_str 是按順序?qū)?yīng)from_str要被替換成的字符集合。
?
例如:
????????????? translate('abcd','ab','AB')?
? 執(zhí)行上面語句后, 'abcd'中的'a' 被'A'替換,? 'b'被'B'替換。所以返回"ABcd"
?
這樣看上去跟replace函數(shù)很類似。
?
但是,在
?????????? replace('abcd','ab','AB') 語句中,?? 是把'abcd'中的 'ab' 整個字符串替換成'AB',? 應(yīng)該能看出與上面translate的區(qū)別了吧。
舉個例子
???????? ?translate('acbd','ab','AB')? 會返回"AcBd" ,因?yàn)?/span>'a' 被'A'替換,? 'b'被'B'替換嘛,替換是每1個字符單獨(dú)處理的。
????????? 而 replace('acbd','ab','AB')? 則返回"acbd”, 因?yàn)樽址?/span>'ab'找不到啊, 所以沒有做到替換處理。
?
下面寫一些translate的一些要注意的特性。
???????
1.
translate('abcd','abc','A') 中,??? 字符a會被'A'替換, 而b與c則沒有指定替換成什么,oracle會默認(rèn)替換成null。所以返回'Ad'.
?
2.
translate('abcd','abc','') 中, 連A被替換的字符也被省略掉了,是不是因?yàn)?/span>abc 3個 字符都被替換成null,所以返回d呢?
答案是錯的, 如果to_str是blank('')或者null,則所有字符都會替換成null, 所以這個表達(dá)式返回null.
?
?
3.translate有許多特別的用途,
例如 我想將1個字符串內(nèi)的數(shù)字全部去掉,則可以用
???????? ?
translate(str,'a1234567890','a')
這樣的話字符串的a(如果存在的話)會被替換成自己a,而其他數(shù)字會替換成null,注意是null而不是空格啊。
或者
translate(str,' 1234567890',' ')
用空格來代替上面的'a'也ok,注意from_str和to_str都是以空格開頭啊。
而不能用
translate(str,'1234567890','') ,? 參考上面的特性2,會返回null的啊。
?
總結(jié)
以上是生活随笔為你收集整理的Oracle translate 函数的用法, 以及和replace的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 转: linux 命令行设置网络
- 下一篇: 关于set sql_trace=ture