今天在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. iftop 安装以及相关参数及说明(转载自csdn)

      转载自http://blog.csdn.net/cqinter/article/details/6250211 关于 Iftop iftop 是类似于top的实时流量监控工具.主要用来显示本机网络 ...

  2. oracle执行计划之-表连接方式

    转载自:http://blog.csdn.net/tianlesoftware/article/details/5826546 在多表联合查询的时候,如果我们查看它的执行计划,就会发现里面有多表之间的 ...

  3. const成员变量初始化总结

    const可以用来声明常量也就是说他的值不能被修改: const成员必须在定义的时候同时初始化,不能进行赋值 如 const int a:a的值不能修改,不能给它赋值,如何才能让它一开始就拥有一个值? ...

  4. Ubuntu配置VNC server

    安装vncserver后,默认的配置下只有一个很"朴素"的图形界面(没有抓图,就一个黑白窗口),要支持Ubuntu的桌面,并且支持和windows之前复制粘贴文字,需要修改xsta ...

  5. 匈牙利算法 DFS模板(了解度+1)

    //算法核心是求最大匹配数 #include<bits/stdc++.h> #include<iostream> #include<cstdio> #include ...

  6. Call me evilxr

    我是Evilxr,博客新开第一天:希望自己能坚持下去!之前友友推荐的是oschina,使用了一段时间发现oschina经常抽风,再者自己平时也有关注一些博客觉得cnblogs也不错,开博的初衷是想记录 ...

  7. ALV 顶栏的按钮设定

    *&---------------------------------------------------------------------* *& Report ZHJ_TEST0 ...

  8. 开发时建议关闭chrome的缓存[Disable cache(while DevTools open)]

    问题:修改了css,JS后,chrome看不到效果 具体情景:最近在写一个PHPbbs,在写CSS时,习惯性的按F5刷新,firefox ie等,都能即时见到效果,唯独chrome 怎么都不行,想了想 ...

  9. 用CorelDRAW等分分割图片的方法

    在CorelDRAW中,想要将图片等分分割可以通过放置容器来实现,根本不需要裁剪工具和辅助线.例如两等分:首先要建立确定等分的份数,建立长方形或正方形.然后把图片放置容器,调整位置,做无缝拼接就可以了 ...

  10. python之元编程(元类实例)

    本实例是元类实例,功能是记录该的子类的类名,并以树状结构展示子类的类名. RegisterClasses继承自type,提供的功能是在__init__接口,为类创建了childrens的集合,并类名保 ...