转至:http://www.th7.cn/db/Oracle/201501/86125.shtml

oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值

oracle 函数介绍之nvl

函数声明:nvl(col,val)

说明:当col为空时取val作为返回值,当col不为空时取col值。

用处:最主要的是格式化数据,比如计算金额时,不想出现空数据,可以使用nvl(JINE,0)来得到0。由于null+(或-,*,/)数字等于

null,所以在表达式中对可能为空的值要使用nvl由于null!=null,有时对可能为空的列进行条件查询时,可能出现结果集丢失数据问题,加上

nvl就不会了。

经典用法:

通过查询获得某个字段的合计值,如果这个值为null将给出一个预设的默认值例如:select nvl(sum(t.字段),1)  from table t就表示如果sum(t.字段) = NULL 就返回 1另一个有关的有用方法declare i integerselect nvl(sum(t.字段),1) into i from table t这样就可以把获得的合计值存储到变量i中,如果查询的值为null就把它的值设置为默认的1orcale

中:select nvl(rulescore,0) from zwjc_graderule where

rulecode='FWTD'; 如果记录中不存在rulecode ='FWTD'的数据.则查不出数据.select

nvl(rulescore,0) into rule_score from zwjc_graderule where

rulecode='FWTD';会报查不到数据的错select nvl(sum(rulescore),0) from zwjc_graderule where rulecode='FWTD'; 如果记录中不存在rulecode ='FWTD'的数据.还是可以得到一行列名为nvl(rulescore,0),值为0的数据.select nvl(sum(rulescore),0) into rule_score from zwjc_graderule where rulecode='FWTD'; 不会报错

oracle 函数介绍之nvl2

Oracle在NVL函数的功能上扩展,提供了NVL2函数。NVL2(E1, E2, E3)的功能为:如果E1为NULL,则函数返回E3,否则返回E2。E2和E3类型不同的话,E3会转换为E2的类型。

限制: 1) E1可以是任意类型,E2,E3不能是long类型。

2) 如果 E2是字符类型,那么E3转为字符型再比较(null除外)。

3) 如果 E2是数值类型,那么E3也转为对应的数值类型。

4) 各个参数都不能是逻辑表达式.

oracle 函数介绍之nullif

格式: nullif(expr1,expr2)  等价于 "case when expr1 = expr 2 then null else expr1 end",相等返回NULL,不等返回expr1.

限制: expr1不能是标识符null,录入nullif(null,expr2)那么会提示错误。

expr1,expr2 都必须是一个变量或者是一个常量表达式,不能是逻辑表达式。

oracle 函数介绍之lnnvl(a)

a是一个表达式

lnnvl只能用于where子句中;表达式的操作符号不能包含 AND, OR,  BETWEEN。

如果a的结果是false或者是unknown,那么lnnvl返回true;如果a的结果是true,返回false.

"如果a的结果是false或者是unknown,那么lnnvl返回true",这个很重要,因为一个空值或者unknown的值和另外一个常量或者有值的变量比较的时候,返回的总是unknown,所以

lnnvl(a>10)  等价于  nvl(a,0)<=10    等价于  a<=10 or a is null  (假设a number(10))

说白了,lnnvl是一种特定的用于简化表达式的函数,orcle解析的时候,应该会解析为 "a<=10 or a is null".

oracle 函数介绍之decode()

decode()函数简介:

主要作用:将查询结果翻译成其他值(即以其他形式表现出来,以下举例说明);

使用方法:

Select decode(columnname,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)

From talbename

Where …

其中columnname为要选择的table中所定义的column,

·含义解释:

decode(条件,值1,翻译值1,值2,翻译值2,...值n,翻译值n,缺省值)的理解如下:

if (条件==值1)

then

return(翻译值1)

elsif (条件==值2)

then

return(翻译值2)

......

elsif (条件==值n)

then

return(翻译值n)

else

return(缺省值)

end if

注:其中缺省值可以是你要选择的column name 本身,也可以是你想定义的其他值,比如Other等;

举例说明:

现定义一table名为output,其中定义两个column分别为monthid(var型)和sale(number型),若sale值=1000时翻译为D,=2000时翻译为C,=3000时翻译为B,=4000时翻译为A,如是其他值则翻译为Other;

SQL如下:

Select monthid , decode (sale,1000,'D',2000,'C',3000,'B',4000,'A',’Other’) sale from output

特殊情况:

若只与一个值进行比较

Select monthid ,decode(sale, NULL,‘---’,sale) sale from output

另:decode中可使用其他函数,如nvl函数或sign()函数等;

NVL(EXPR1,EXPR2)

若EXPR1是NULL,则返回EXPR2,否则返回EXPR1.

SELECT NAME,NVL(TO_CHAR(COMM),'NOT APPLICATION') FROM TABLE1;

如果用到decode函数中就是

select monthid,decode(nvl(sale,6000),6000,'NG','OK') from output

sign()函数根据某个值是0、正数还是负数,分别返回0、1、-1,

如果取较小值就是

select monthid,decode(sign(sale-6000),-1,sale,6000) from output,即达到取较小值的目的。

Oracle中实现sql查询得到连续号码段

一.表名为t的表中数据如下: select * from t; FPHM KSHM ---------- ---------- 实现代码如下: select b.fphm,min(b.kshm),ma ...

oracle中通过sql查询sde中图形面积

select st_area(shape) from XAG2011430200000M_DLTB t where objectid=330

Oracle中的SQL分页查询原理和方法详解

Oracle中的SQL分页查询原理和方法详解 分析得不错! http://blog.csdn.net/anxpp/article/details/51534006

PL&sol;SQL Developer中输入SQL语句时如何自动提示字段

在PL/SQL Developer中编写sql语句时,如果无法自动提示字段那是一件痛苦的事情,工作效率又低,在此演示下如何在PL/SQL Developer工具中自动提示字段,让开发者省时又省心,操作 ...

sql判断以逗号分隔的字符串中是否包含某个字符串--------MYSQL中利用select查询某字段中包含以逗号分隔的字符串的记录方法

sql判断以逗号分隔的字符串中是否包含某个字符串---------------https://blog.csdn.net/wttykj/article/details/78520933 MYSQL中利 ...

Oracle中的列转行实现字段拼接用例

文章目录 Oracle中的列转行实现字段拼接 场景 在SQL使用过程中经常有这种需求:将某列字段拼接成in('XX','XX','XX','XX','XX','XX' ...)做为查询条件. 实现 s ...

Oracle中PL&sol;SQL的执行部分和各种流程控制

Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...

Oracle中PL&sol;SQL简介、基本语法以及数据类型

Oracle中PL/SQL简介.基本语法以及数据类型 一.PL/SQL简介. Oracle PL/SQL语言(Procedural Language/SQL)是结合了结构化查询和Oracle自身过程控 ...

对于Oracle中分页排序查询语句执行效率的比较分析

转自:http://bbs.csdn.net/topics/370033478 对于Oracle中分页排序查询语句执行效率的比较分析 作者:lzgame 在工作中我们经常遇到需要在Oracle中进行分 ...

随机推荐

点击弹出固定大小的新窗口(js实现)

git 笔记记录

分布式版本控制系统Git 是一套内容寻址文件系统,从核心上来看不过是简单地存储键值对.一: git 本地clone 一个仓库    1. 直接clone一个仓库:        $: git clon ...

关于MyEclipse SVN显示资源历史记录乱码问题

使用SVN查看历史记录进行文件对比的时候,有时会出现乱码问题,如下图: 解决办法:打开Window-->Preferences 如下: 原来默认的是GBK,改为UTF-8即可

关于label和input对齐的那些事

input文本和label对齐 默认状态下,也就是下面这样, 文字和input是居中的.

我是中国人

【java集合系列】--- LinkedList

开篇前言--LinkedList中的基本用法 在前面的博文中,小编介绍List接口中的ArrayList集合,List这个接口,有两个实现类,一个就是ArrayList另一个是LinkedList(链 ...

30分钟彻底弄懂flex布局

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由elson发表于云+社区专栏 目前在不考虑IE以及低端安卓机(4.3-)的兼容下,已经可以放心使用flex进行布局了.什么是flex布 ...

kubernetes之deployment滚动升级

参考:https://blog.51cto.com/wutengfei/2116663 创建和管理多个Pod--Deployment Deployment 为 Pod 和 ReplicaSet 提供了 ...

【CF61D】Eternal Victory

题目大意:给定一棵 N 个节点的树,求从 1 号节点(根节点)出发,任意节点结束,且至少经过每个节点一次的最短路径是多少. 题解:首先考虑最终要回到根节点的情况,可以发现最短路径长度一定等于该树边权的 ...

网络知识 ACL NAT IPv6

第1章 ACL 访问控制列表 访问控制表(Access Control List,ACL),又称存取控制串列,是使用以访问控制矩阵为基础的访问控制方法,每一个对象对应一个串列主体. 访问控制表描述每一 ...

oracle判断字段为空时选用别的字段_oracle中使用sql查询时字段为空则赋值默认相关推荐

  1. oracle中使用sql查询时字段为空则赋值默认

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl ...

  2. ACCESS中写SQL语句时尽量把表名和字段名用中括号括起来

    ACCESS中写SQL语句时尽量把表名和字段名用中括号括起来,一般都要写成: [TableName].FieldName,否则较长的中文名表名可能会被不识别.

  3. sql查询时的左连接,右连接,和内连接详细解释

    1.sql查询时什么叫左连接和右连接     左连接和右连接都是外部连接,也就是区别于内部连接,它对不满足连接条件的行 并不是象内部连接一样将数据完全过滤掉,而是保留一部分数据,行数不会减少.     ...

  4. mysql中利用sql语句修改字段名称,字段长度等操作(亲测)

    在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿.这些操作可以在phpmyadmin或者别的m ...

  5. mysql字段重命名_MySQL中使用SQL语句对字段进行重命名

    MySQL中,如何使用SQL语句来对表中某一个字段进行重命名呢?我们将使用alter table 这一SQL语句. 重命名字段的语法为:alter table change . 现在我们来尝试把tes ...

  6. oracle report builder 6i下载,oracle report builder 6i - 数据模型中的SQL查询代码

    我是Vijetha,我正在研究报告6i,我很陌生 . 我有以下查询 . 在front_end中,在Reports Parameter中,当用户单击"运行"按钮时,它将询问START ...

  7. sql查询某字段重复的数据

    sql查询某字段重复的数据 最近老是遇到添加新的约束问题,其中就有要求数据不能重复,那么以前哪些测试数据就不方便改了,但是又不能删除,所以为了防止重复,我们只能查询出来一个个改了,那么查询的Sql语句 ...

  8. PL/SQL 查询的字段显示不全

    问题描述: PL/SQL 查询的字段显示不全. 问题原因: plsql字符编码是"AMERICAN_AMERICA.ZHS16GBK" select userenv('langua ...

  9. java绑定变量怎么加_在JAVA 源程序中编写SQL语句时使用ORACLE 绑定变量

    在JAVA中的SQL 语句的编写方面,没有使用ORACLE 绑定变量,很大程度上降低了数据库的性能,表现在两个方面: 1.SQL语句硬分析(Hard Parse)太多,严重消耗CPU资源,延长了SQL ...

最新文章

  1. windows远程桌面如果超出最大连接数, 使用命令行mstsc /console登录即可
  2. 神奇的输入 while(cin....)如何在遇见换行之后进入下一层循环读入
  3. 对如何使用WaveDrom画波形图的研究(案例分解分析)
  4. Swift 注释规范和文档注释
  5. linux给用户赋权限_linux/unix的用户与权限
  6. linux编译安装zabbix,Linux安装zabbix--CentOS7.3
  7. .net读写配置文件
  8. Redis的数据类型之String
  9. Python之socketserver模块和验证客户端链接的合法性
  10. .NET Core中的CSV解析库
  11. Spring精华问答 | Spring框架有哪些主要模块?
  12. Mongo db 与mysql 语法比较
  13. 车险对方全责理赔要自己垫付吗?
  14. 为什么数据库使用有序索引,而程序员却在使用哈希表?
  15. Candy leetcode java
  16. h264和h265视频流SDP描述详解
  17. 51 TMOD、TCON设置定时
  18. linux-网络安全防火墙
  19. css样式border-radius学习-画出水滴
  20. 非空子集的生成(二进制法)

热门文章

  1. 读取db服务器信息出错,尝试读取foxpro dbf并获取错误:无法初始化链接服务器的OLE DB提供程序“MSDASQL”的数据源对象“(空)”...
  2. 【草稿待续】统一的嵌入式软件编程模型——驱动
  3. kettle spoon判断增量更新_Kettle增量更新设计技巧
  4. 记录kettle spoon.bat 无法启动 (系统找不到指定的路径。) 只有无限接近死亡 才能领悟真滴
  5. 毕业设计之 --- 在线考试系统
  6. ubuntu系统中用c语言编写简单程序
  7. 类与类图,以及类间关系
  8. python 画饼图
  9. CSS外部字体引入方式
  10. 世事洞明职场“行”(上篇)——刘墉力作《我不是教你诈》花絮采撷