Oracle translate() 详解+实例

一、语法:
TRANSLATE(string,from_str,to_str)
二、目的
返回将(所有出现的)from_str中的每个字符替换为to_str中的相应字符以后的string。TRANSLATE 是 REPLACE 所提供的功能的一个超集。如果 from_str 比 to_str 长,那么在 from_str 中而不在 to_str 中的额外字符将从 string 中被删除,因为它们没有相应的替换字符。to_str 不能为空。Oracle 将空字符串解释为 NULL,并且如果TRANSLATE 中的任何参数为NULL,那么结果也是 NULL。

三、允许使用的位置
过程性语句和SQL语句。
四、示例
Sql代码

1. SELECT TRANSLATE('abcdefghij','abcdef','123456') FROM dual;
2. TRANSLATE (
3. --------------
4. 123456ghij
5.
6. SELECT TRANSLATE('abcdefghij','abcdefghij','123456') FROM dual;
7. TRANSL
8. ----------
9. 123456

语法:TRANSLATE(expr,from,to)

expr: 代表一串字符,from 与 to 是从左到右一一对应的关系,如果不能对应,则视为空值。

举例:

select translate('abcbbaadef','ba','#@') from dual (b将被#替代,a将被@替代)

select translate('abcbbaadef','bad','#@') from dual (b将被#替代,a将被@替代,d对应的值是空值,将被移走)

因此:结果依次为:@#c##@@def 和@#c##@@ef
语法:TRANSLATE(expr,from,to)

expr: 代表一串字符,from 与 to 是从左到右一一对应的关系,如果不能对应,则视为空值。简单说来,就是将from中的字符转换为to中与之位置对应的字符,若to中找不到与之对应的字符,返回值中的该字符将会被删除。

举例:

select translate('abcbbaadef','ba','#@') from dual (b将被#替代,a将被@替代)

select translate('abcbbaadef','bad','#@') from dual (b将被#替代,a将被@替代,d对应的值是空值,将被移走)

因此:结果依次为:@#c##@@def 和@#c##@@ef

示例如下:

示例一:将数字转换为9,其他的大写字母转换为X,然后返回。

SELECT TRANSLATE('2KRW229',
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'9999999999XXXXXXXXXXXXXXXXXXXXXXXXXX') "License"
FROM DUAL

示例二:将数字保留,将其他的大写字母移除。

SELECT TRANSLATE('2KRW229',
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'0123456789') "Translate example"
FROM DUAL

罗勇补充示例如下:

示例三:示例证明是按照字符来处理,不是按照字节来处理,如果to_string的字符数比from_string多的话,多出的字符数似乎没有什么用处,也不会引发异常。

SELECT TRANSLATE('我是中国人,我爱中国', '中国', 'China') "Translate example"

FROM DUAL

示例四:下面的示例证明,如果from_string的字符数大于to_string,那么多出的字符会被移除,也就是ina三个字符会从char参数中移除,当然区分大小写啦。

SELECT TRANSLATE('I am Chinese, I love China', 'China', '中国') "Translate example"

FROM DUAL

示例五:以下示例证明,如果第二个参数为空字符串,整个返回null。

SELECT TRANSLATE('2KRW229',
'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',
'') "License"
FROM DUAL

示例六:在银行转帐时经常看见账户人只显示姓名的最后一个字,其余的用星号代替,我就用translate来做个类似的东西吧。

SELECT TRANSLATE('中国人',

substr('中国人',1,length('中国人') - 1),

rpad('*',length('中国人'),'*')) "License"

FROM DUAL

补充:TRANSLATE(string,from,to)转换的两个注意点:

1、转换源字串(from)在目的字串(to)中不存在对应,则转换后被截除

2、转换目的字串(to)不能为'',''在oracle中被视为空值,因此无法匹配而返回为空值

另外,一个汉字作为一个字符还是两个字符进行转换与字符集的设置相关。

oracle的分号和斜杠/

如果是语句的话,;表示结束并且运行。如果是程序块或者pl块,;表示结束不允许,必须/表示运行。

;是执行语句必须的,/是执行语句块必须的。

对一些block,比如declare, begin end ,create procedure之类的,'/'是必须的,用来执行run。而一些简单statement,分号后‘/ '会导致运行两次。

正斜杠(/):在Oracle中,用来终止SQL语句。更准确的说,是表示了“运行现在位于缓冲区的SQL代码”。正斜杠也用作分隔项。

例如:执行以下语句

CREATE TABLE TEMP

( AAA VARCHAR2(2 BYTE),

BBB VARCHAR2(2 BYTE)

)

Insert into TEMP (AAA,BBB) values ('TESTA','TESTB');

就会报错: TABLE OR VIEW DOES NOT EXIST。

在INSERT 语句之前加入正斜杠/即可。

Oracle 的  SqlPlus输入了一段 SQL 语句之后。
如果是 SELECT 语句, 以分号 或者  /  结束,就可以执行了。如果输入的是一个 存储过程的语句,那么最后输入分号之后, 还不能运行。
非要输入 /  才会执行

Oracle translate() 详解+实例相关推荐

  1. 【函数】oracle translate() 详解+实例

    转载自:http://blog.itpub.net/26892340/viewspace-721945/ 一.语法:  TRANSLATE(string,from_str,to_str) 二.目的  ...

  2. Oracle Merge Into 的用法详解实例

    Oracle merge into 的用法详解实例 作用:merge into 解决用B表跟新A表数据,如果A表中没有,则把B表的数据插入A表: 语法: MERGE INTO [your table- ...

  3. Oracle ASM 详解 收藏

    Oracle ASM 详解 ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也 ...

  4. 常用经典SQL语句大全完整版--详解+实例 (存)

    常用经典SQL语句大全完整版--详解+实例 转 傻豆儿的博客 http://blog.sina.com.cn/shadou2012  http://blog.sina.com.cn/s/blog_84 ...

  5. oracle有哪两种内存结构,Oracle体系结构详解(物理构造,内存结构和逻辑结构)...

    当前位置:我的异常网» 数据库 » Oracle体系结构详解(物理构造,内存结构和逻辑结构 Oracle体系结构详解(物理构造,内存结构和逻辑结构) www.myexceptions.net  网友分 ...

  6. oracle里面asm的作用,Oracle ASM 详解

    Oracle ASM 详解 ASM:Automatic Storage Management, 是Oracle 主推的一种面向Oracle的存储解决方案, ASM 和 RDBMS 非常相似,ASM 也 ...

  7. Oracle 体系结构详解

    Oracle 体系结构详解 什么是Orcale数据库? Orcale数据库(Oracle DateBase)是一款关系型数据库(这里就不多做介绍了),通常情况下,我们会把承载我们核心数据的系统通称为数 ...

  8. oracle scn 重置,学习笔记:Oracle SCN详解 SCN与Oracle数据库恢复的关系

    天萃荷净 分享一篇关于Oracle SCN的详解,介绍SCN与Oracle数据库恢复的关系和SCN在数据库中的作用 一.为什么需要System checkpoint SCN号与Datafile Che ...

  9. oracle 修改序列 next number,oracle序列详解

    }] //最大值 [{MINVALUE n | NOMINVALUE}] //最小值 [{CYCLE | NOCYCLE}] //循环/不循环 [{CACHE n | NOCACHE}];//分配并存 ...

最新文章

  1. 曝光机与曝光能量_LED曝光机
  2. 有赞融资10亿港元 腾讯领投加紧布局产业互联网
  3. 快速排序C实现(阿里巴巴 2012年全国校招笔试题)
  4. dell raid配置
  5. shell取出多列文件中某一列重复的数据
  6. SAP Cloud for Customer UI Designer里如何消费Object Value Selector(OVS)
  7. BAT 力捧的 AI 项目再次爆发,这些程序员都受影响!
  8. 【Python-3.5】matplotlib绘制气温折线图
  9. element元素 取属性_js element类型的属性和方法整理
  10. MySQL的Grant命令[转]
  11. mongodb基本数据类型
  12. 居然可以一键删除微博内容
  13. 计算机视觉——SIFT图像匹配算法
  14. 4种方法设置Word文档保护
  15. java 使用xml生成word_java 根据word xml模板生成word
  16. 多智能体强化学习:合作关系设定下的多智能体强化学习
  17. Python数据分析-时间序列预测法
  18. mysql查询最近7天的数据,没有数据自动补0
  19. 如何使用KMS激活win10和office
  20. MySQL高可用之DRBD

热门文章

  1. 抓娃娃机爪不动怎么办_夹娃娃的方法攻略 抓娃娃机有没有漏洞
  2. 有一个学计算机男友是什么体验,有一个程序员男朋友是怎样的体验?
  3. 寻求一个兼职的安卓开发工程师
  4. ios收费android免费,这款软件可以免费播放全网所有会员收费视频,支持安卓和IOS版本...
  5. 2021年电工(中级)报名考试及电工(中级)模拟考试
  6. CAMIF :camera interface 摄像头接口简介
  7. 浏览器为低版本IE的时候的信息提示;旧版 Internet Explorer 升级提示页;旧版 Internet Explorer 淘汰行动
  8. Pandas数据分析基础
  9. 投资持续升温,智能汽车“网络安全”赛道风口已至
  10. wpf工程中在Xaml文件下添加多个cs文件