• translate和replace的区别


     今天在oracle数据库中看到replace和translate的嵌套就有点蒙了,于是就上网看了一下,感觉豁然开朗:

    今天遇到的问题如下:

    replace(TRANSLATE(a.deal_msg,'0123456789',' '),' ','') AS deal_msg ,

    这只是一条sql语句中的部分片段,什么意思呢?就是将a.deal_msg字段中出现的0和1替换为空格,当然也包括将01替换为两个空格,并将a.deal_msg中出现的23456789无论是连续还是单个数字均删除,然后再将替换后的字符串中的连续两个空格替换为一个空格,为什么会这样呢?先看看translate和replace的规则吧!

    一、translate:

    TRANSLATE(CHAR,FROM,TO),将char中出现的from替换为to中相应的字符,如果from的长度大于to的长度,那么将from大于to的长度之后的出现在char中的字符删除。举个简单的例子:

    select  translate('anhw','ang','A') from dual;

    查询结果:

    ---------

    Ahw

    结果分析:因为第三个参数的A和第二个参数的a位置对应,所以将第一个参数的a替换为A,又因为第二个参数的长度为3,第三个参数的长度为1,小于第二个参数2个长度,所以将出现在第一个参数中的n和g和ng删除,由于anhw中有n,故将n删除,因此结果为

    Ahw.

    二、replace

    REPLACE(char, search_string,replacement_string),将char中出现的字符串search_string全部替换为replacement_string字符串。如果第二个参数在第一个参数中没有那么返回结果还是第一个参数的原字符串,举个简单的例子:

    select replace('anhw','ang','A') from dual;

    查询结果:

    -----------

    anhw

    结果分析:由于ang在anhw没有对应的连续字符,因此不会进行替换,返回原字符串.

    select replace('anhw','an','A') from dual;

    查询结果:

    -----------

    Ahw

    结果分析:由于an在anhw字符串中有对应的连续字符,因此将其替换为A,返回结果为Ahw.

  • 相关阅读:
    Oracle中TO_DATE格式
    实现带查询功能的Combox控件
    Combox和DropDownList控件的区别
    C# 获取字符串中的数字
    C# try catch finally 执行
    树形DP codevs 1814 最长链
    codevs 2822 爱在心中
    匈牙利算法 cojs.tk 搭配飞行员
    匈牙利算法 codevs 2776 寻找代表元
    2016-6-19 动态规划,贪心算法练习
  • 原文地址:https://www.cnblogs.com/bingo1717/p/7771814.html
Copyright © 2020-2023  润新知