当前位置 > 主页 > 万和大讲堂 >


南京OCP培训 Oracle translate()详解+实例

2015-12-21 11:37

  一、语法:

 

  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。南京OCP培训

 

  三、允许使用的位置

 

  过程性语句和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 是从左到右一一对应的关系,如果不能对应,则视为空值。南京OCP培训

 

  举例:

 

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

 

  select translate('abcbbaadef','bad','#@') from dual (b将被#替代,a将被@替代,d对应的值是空值,将被移走)。南京Oracle认证培训

 

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

 

  语法:TRANSLATE(expr,from,to)

 

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

 

  举例:

 

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

 

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

 

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

 

  示例如下:

 

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

 

  SELECT TRANSLATE('2KRW229',

 

  '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',

 

  '9999999999XXXXXXXXXXXXXXXXXXXXXXXXXX') "License"

 

  FROM DUAL

 

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

 

  SELECT TRANSLATE('2KRW229',

 

  '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',

 

  '0123456789') "Translate example"

 

  FROM DUAL

 

  罗勇补充示例如下:

 

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

 

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

 

  FROM DUAL

 

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

 

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

 

  FROM DUAL

 

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

 

  SELECT TRANSLATE('2KRW229',

 

  '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ',

 

  '') "License"

 

  FROM DUAL

 

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

 

  SELECT TRANSLATE('中国人',

 

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

 

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

 

  FROM DUAL


最近开班 more>
  • Web前端开发
  • 软件测试
  • 软件测试预科班
  • AI大模型+全栈开发开班
  • 云原生精英班
  • 云网预科班
  • 开发课程基础班第三期
  • 开发课程基础班第二期
  • 开发课程基础班第五期
  • Java全栈
  • CISP
  • HCIP-cloud
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • HCIE-Datacom(HCIA,HCIP基础)
  • HCIP-Datacom(HCIA基础)
  • HCIA-Datacom(0基础)
  • OCP 19C
  • RHCA
  • 6月9日
  • 5月21日
  • 5月14日
  • 6月9日
  • 5月7日
  • 5月26日
  • 5月19日
  • 5月12日
  • 6月3日
  • 6月9日
  • 随时开课
  • 7月12日
  • 5月19日
  • 5月19日
  • 5月7日
  • 5月10日
  • 5月24日
  • 5月24日
  • 随时开课
  • 随时开课
    • 姓 名 :
    • 电 话 :
    • 课 程 :

技术交流群

  • Java大数据交流群560819979加入
  • Python技术交流群595083299加入
  • Oracle技术交流群595119011加入
  • Web前端技术交流群604697610加入
  • Huawei技术交流群482919361加入
  • Redhat技术交流群587875348加入
  • UI设计技术交流群511649801加入
  • Cisco技术交流群596886705加入
  • IT运维技术交流群605888381加入