今天在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.

translate和replace的区别的更多相关文章

  1. window.location.href 和 window.location.replace 的区别

    window.location.href  和  window.location.replace 的区别 1.window.location.href=“url”:改变url地址: 2.window. ...

  2. Document.location.href和.replace的区别

    转自:https://www.cnblogs.com/GT_Andy/archive/2007/10/31/1922138.html 1 Document.location.href和.replace ...

  3. Mysql 语句 insert into 与 replace into 区别

    []insert into 与 replace into 区别 replace into 的运行与insert into 很相似.不同点: 若表中的一个旧记录与一个用于PRIMARY KEY 或 一个 ...

  4. react中路由跳转push与replace的区别

    路由跳转,replace / push 区别 push: a-b-c 可以回到上一级 例: this.props.history.push('路由地址') replace: a-b-c 回不到上一级 ...

  5. vue 中router.go;router.push和router.replace的区别

    vue 中router.go:router.push和router.replace的区别:https://blog.csdn.net/div_ma/article/details/79467165 t ...

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

     translate 是用来替换字符的函数 语法:  translate(char, from_str,to_str)   其中,char是待处理的字符串. from_str是按顺序排列若干个要被替换 ...

  7. Python 中translate()与replace()区别

    translate函数和replace函数一样,用于替换字符串中的某个部分,但是和replace不同,translate只处理单个字符,而且可以同时进行多个替换.在使用translate函数转换之前, ...

  8. window.location.href和window.location.replace的区别

    有3个html页面(.html, .html, .html). 进系统默认的是1.html ,当我进入2.html的时候, .html里面用window.location.replace(" ...

  9. memcache 中的add set 和replace的区别

    用过memcache的人都有一个疑惑,那就是memcache中为什么会有一个add方法.一个set方法.一个replace呢,这几个方法又有着什么样的区别呢,下边我们来分析下这几个方法的不同之处: m ...

随机推荐

  1. [转]const 与 readonly知多少

    引自:http://www.cnblogs.com/royenhome/archive/2010/05/22/1741592.html 尽管你写了很多年的C#的代码,但是可能当别人问到你const与r ...

  2. jquery的dom操作

    DOM操作 $("p").appendTo("div");把p标签追加到div标签--中--后 $("p").prependTo(" ...

  3. 【转】JavaScript获取节点类型、节点名称和节点值

    DOM节点信息包括节点类型(nodeType).节点名称(nodeName)和节点值(nodeValue). 节点类型 DOM节点中,每个节点都拥有不同的类型.W3C规范中常用的 DOM节点类型有以下 ...

  4. 浏览器 HTTP 协议缓存机制详解

    最近在准备优化日志请求时遇到了一些令人疑惑的问题,比如为什么响应头里出现了两个 cache control.为什么明明设置了 no cache 却还是发请求,为什么多次访问时有时请求里带了 etag, ...

  5. 深入理解kmp中的next数组

    next数组 1. 如果对于值k,已有p0 p1, ..., pk-1 = pj-k pj-k+1, ..., pj-1,相当于next[j] = k. 此意味着什么呢?究其本质,next[j] = ...

  6. MySql和Oracle的日期转换到底有哪些不同?我们来比较一下

    1.MySql和Oracle的日期转换 mysql中有2种日期格式DATE和TIME,oracle只有一种日期格式DATE. oracle> select to_char(sysdate,'yy ...

  7. Java数据类型、变量、运算符、语句。

    数据类型:整型 int long short byte小数 double float 字符 char 转义字符:\'(单引号字符) \\(反斜杠字符) \n(换行) \r(回车) \t(水平制表符,相 ...

  8. RY哥查字典

    时间限制: 1 s 空间限制: 16000 KB 题目等级 : 钻石 Diamond 题目描述 Description RY哥最近新买了一本字典,他十分高兴,因为这上面的单词都十分的和谐,他天天查字典 ...

  9. 学习笔记-Java编程思想

    2016-01-03 Swith(整数选择因子):必须是int或char这样的整数值. Java中不包含goto语句,但是可以通过标识符实现类似的控制.

  10. PHP 类中的魔术方法

    定义: PHP类中以两个下画线“__”开头的方法被称为魔术方法. 分类: 例如:构造方法:__construct:析构方法:__destruct:动态重载:__set().__get().__call ...