oracle nvl2函数延伸,Oracle中replace、translate、nvl2 函数详解

简要比较:

replace:字符串级别的代替

如:SELECT REPLACE('acdd','cd','ef') FROM dual; →aefd

translate:字符级别的代替

如:SELECT TRANSLATE('acdd','cd','ef') FROM dual; →aeff

分别详解:

replace:

语法:REPLACE ( char , search_string [, replacement_string] )

REPLACE returns char with every occurrence of search_string

replaced with replacement_string. If replacement_string is omitted

or null, then all occurrences of search_string are removed. If

search_string is null, then char is returned.

解释:repalce中,每个search_string都被replacement_string所代替。

select replace('acdd','cd','ef') from dual;→ aefd

如果replacement_string为空或为NULL,那么所有的search_string都被移除。

select replace('acdd','cd','') from dual;→ad

如果search_string为null,那么就返回原来的char。

select replace('acdd','','ef') from dual;→acdd

select replace('acdd','','') from dual;→acdd(也是两者都为空的情况)

Both search_string and replacement_string, as well as char,

can be any of the datatypes CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB,

or NCLOB. The string returned is of VARCHAR2 datatype and is in the

same character set as char.

解释:这段指明了可以用的数据类型.

This function provides functionality related to that provided

by the TRANSLATE function. TRANSLATE provides single-character,

one-to-one substitution. REPLACE lets you substitute one string for

another as well as to remove character strings.

translate:

语法:TRANSLATE ( 'char' , 'from_string' , 'to_string' )

TRANSLATE returns char with all occurrences of each character

in from_string replaced by its corresponding character in

to_string. Characters in char that are not in from_string are not

replaced. The argument from_string can contain more characters than

to_string. In this case, the extra characters at the end of

from_string have no corresponding characters in to_string. If these

extra characters appear in char, then they are removed from the

return value.You cannot use an empty string for to_string to remove

all characters in from_string from the return value. Oracle

interprets the empty string as null, and if this function has a

null argument, then it returns null.

解释:Translate中,每个from_string中的字符被to_string中相应的字符所代替。

select translate('acdd','cd','ef') from dual;→aeff

如果from_string比to_string长,那么from_string中多余的字符将被移除。

select translate('acdd','acd','ef') from dual;→ef

(a由e代替,c由f代替,d就被移除)

select translate('acdd','cda','ef') from

dual;→eff(c由e代替,d由f代替,a就被移除)

如果to_string为空,或者两者都为空,那么返回char也为空。所以to_string不能为空。

select translate('acdd','cd','') from dual;→ (空)

select translate('acdd','','') from dual;→(空)

实战:

如何判断一个字符串是否是数字?

解:先转换:由于to_string不能为空,我们巧用#号代替

select translate('abc123','#1234567890.','#') from

dual;→abc

from_string中的#被to_string中的#代替,但char中又没有#字符,所以通过这一步躲开了to_string必须不为空的规则。然后后面的数字以及小数点都转换为空,于是原来的字符串中只留下abc三个字符。

转换好后,用nvl2判断即可:

select nvl2(translate('abc123','#1234567890.','#'),'字符串','数字')

from dual;→字符串

nvl2的作用就是,NVL2 (expr1, expr2, expr3)

->expr1不为NULL,返回expr2;为NULL,返回expr3。这样我们就可以判断一个字符串是否是数字了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/497861.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

管道( Pipeline )模型--示例

类图 时序图 阀门接口 /*** 阀门接口* author administrator**/ public interface Valve {public String getName();public void invoke( Context context ); }基本阀门 /*** 基础阀门* author administrator**/ public class BasicValve implements Valve{private String name…

一文告诉你,NIPS 2017有多火爆 | 附PPT、视频、代码大总结

原文来源:Medium、GitHub作者:TarasSereda「雷克世界」编译:嗯~阿童木呀、KABUDA今年的NIPS是一场盛大的、极富教育意义和探索精神的、魅力十足且人数众多的会议。第一步,登记排队量子计算机Tutorials深度学习:实践与趋…

不入oracle数据库,Oracle数据库之操作符及函数

一、操作符:1、分类:算术、比较、逻辑、集合、连接;2、算术操作符:执行数值计算;--工资加1000select empno,ename,job,sal1000 from emp;3、比较操作符:--比较运算符(between and包头不包尾)select * from …

Facebook面部识别新突破:可识别未标记照片中用户

来源:凤凰科技据科技博客TechCrunch报道,Facebook公司希望用户了解和掌控人们上传的照片,即便用户没有在照片中被标记出来。周二,Facebook推出了一项新的面部识别功能:照片检查(Photo Review)。…

oracle cronb,利用Crontab实现对Oracle数据库的定时备份

假设数据库的拥有者为oracle,数据库的用户为scott,其口令为trigger,Oracle数据库的参数$ORACLE_HOME为/usr/oracle,$ORACLE_SID为oracle1,则实现步骤如下:1、建立实现备份的shell在/usr/oracle中用vi命令建…

德扑 AI 之父解答 Libratus 的13个疑问:没有用到任何深度学习,DL 远非 AI 的全部

来源: AI科技评论概要:卡耐基梅隆大学计算机系在读博士生 Noam Brown 和计算机系教授 Tuomas Sandholm 来到 reddit 的机器学习分版,和网友们一起来了一场「你问我答」(ask me anything)。卡耐基梅隆大学计算机系在读博…

oracle导入错误1401,都是crosscheck惹的祸,备份归档失败

备份是大事,有的时候睡觉都惊醒,忘备份了如果备份不细检查备份环节就更可怕了RMAN> list archivelog all;List of Archived Log CopiesKey Thrd Seq S Low Time Name------- ---- ------- - --------- ----1224 2 107 X 25-DEC-07 /home/oracle/archive/…

Web.XML配置详细说明

1 定义头和根元素 部署描述符文件就像所有XML文件一样,必须以一个XML头开始。这个头声明可以使用的XML版本并给出文件的字符编码。 DOCYTPE声明必须立即出现在此头之后。这个声明告诉服务器适用的servlet规范的版本(如2.2或2.3)并指定管理此…

如何测量智能产品的AI智商水平,论AI的三种智商 |未来研究

前言:本文是未来智能实验室关于人工智能智商的最新研究文章,主要提出智能系统的智能水平会因为测试目的的不同,产生三种不同的智商类型,针对这三种AI智商,本文也提出对应的测试方法和数学公式。相关英文论文与2017年12…

php 获取两个日期相隔几周,怎么样计算2个日期之间相差几周

你的位置:问答吧-> PHP基础-> 问题详情怎么样计算2个日期之间相差几周如题如果2个日期在同一年中的话可以通过date("W",unix时间戳)来计算但特别麻烦的就是2个日期不是在同一年中,可能2个日期相差几年请高手指教作者: gengle53022发布时间: 2007-04…

硅谷顶级VC:“S曲线”看四大风口,创企成功机会巨大

来源:全球技术地图新技术走入产业应用阶段,在完成了前期基础的试水后,大企业往往以雄厚的资本实力、强大的人才团队和广阔的市场资源,迅速占领新技术高地。那么顺应新技术而诞生的创业企业,还是否有打造成功企业的机会…

try-catch-finally-return执行路径总结

以前总结的是:finally总是在return 前执行。 这句话是没错,但是遇到如下代码。分析返回值时却解释不通了。 public int inc(){int x;try{x 1;return x;}catch( Exception e ){x 2 ;return x;}finally{x 3;}}这个方法执行完后,返回的是多少…

log4j2到oracle,Log4j2进阶使用(更多高级特性)

# 1.高级进阶说明本文介绍Log4j2高级进阶使用,基于[Log4j2进阶使用(按大小时间备份日志)](https://www.jianshu.com/p/c7ae523f6e82),介绍更多的高级特性,本文基于上文给出的完整log4j2.xml,修改对应的配置项,演示高级…

Junit4中Test Suite的用法

貌似目前项目用到的Eclipse中新建Test Suite的向导是针对Junit3的,而且网上很多资料介绍Test Suite也都是Junit3的,这里简要介绍一下Junit4中Test Suite的使用方法。一种是类似Junit3的方法:public class TestSuite1 { public static Test su…

oracle alert日志点检,有哪些关键性运行指标需要每日点检、监控、跟踪的?

原标题:有哪些关键性运行指标需要每日点检、监控、跟踪的?以下内容来自社区问答哪些关键性运行指标需要每日点检、监控、跟踪的?关键性指标即可,说多了记不住,用处不大。洪烨 哈尔滨银行 数据库管理员:,1.容…

新型量子计算机首个基本元件问世,扩展性更强运算速度更快

来源:科技日报概要:最新研究证明了建造这种量子计算机的可行性,其有潜力克服目前的量子计算方法面临的扩展问题。据物理学家组织网近日报道,瑞典和奥地利物理学家携手,研制出了单量子比特里德伯(Rydberg&am…

Strut2中单元测试实例

项目文件结构图: 椭圆框中的Jar 包是单元测试时候需要引入的。 矩形框 MainTest 每个包下一个,为 JUnit4 的 Suite 套件,其作用是执行本包下的“测试类”和子包的 MainTest。 例如:jp.co.snjp.ht.MainTest package jp.co.snjp.h…

德国图宾根大学发布可扩展「对抗黑盒攻击」,仅通过观察决策即可愚弄深度神经网络

原文来源:arXiv作者:Wieland Brendel、Jonas Rauber、Matthias Bethge「雷克世界」编译:嗯~阿童木呀、哆啦A亮不知道大家有没有注意到,许多机器学习算法很容易受到几乎不可察觉的输入干扰的影响。到目前为止,我们还不清…

oracle中执行自带脚本,oracle自带脚本

------------------------------------------------------------优化相关------------------------------------------------------------生成sql执行计划:?/rdbms/admin/awrsqrpt成成sql优化建议:?/rdbms/admin/sqltrptADDM报告:?/rdbms/admin/addmr…

Understanding node.js

来源:http://debuggable.com/posts/understanding-node-js:4bd98440-45e4-4a9a-8ef7-0f7ecbdd56cb Node.js has generally caused two reactions in people Ive introduced it to. Basically people either "got it" right away, or they ended up being …