• Oracle translate 函数的用法, 以及和replace的区别


     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的啊。

  • 相关阅读:
    Spring Cloud概述
    Servlet调用流程和Spring MVC调用流程
    待看文章链接
    MyBatis之 resultMap 元素子元素详解
    MyBatis核心配置文件模板代码
    ios上架
    iOS打包部署
    Android XML绘图(4)——Bitmap
    Android XML绘图(2)——Layer
    Android XML绘图(3)——Selector
  • 原文地址:https://www.cnblogs.com/shaohz2014/p/3873055.html
Copyright © 2020-2023  润新知