oracle判断字段为空时选用别的字段_oracle中使用sql查询时字段为空则赋值默认
转至: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/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/SQL的执行部分和各种流程控制
Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: ...
Oracle中PL/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查询时字段为空则赋值默认相关推荐
- oracle中使用sql查询时字段为空则赋值默认
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl ...
- ACCESS中写SQL语句时尽量把表名和字段名用中括号括起来
ACCESS中写SQL语句时尽量把表名和字段名用中括号括起来,一般都要写成: [TableName].FieldName,否则较长的中文名表名可能会被不识别.
- sql查询时的左连接,右连接,和内连接详细解释
1.sql查询时什么叫左连接和右连接 左连接和右连接都是外部连接,也就是区别于内部连接,它对不满足连接条件的行 并不是象内部连接一样将数据完全过滤掉,而是保留一部分数据,行数不会减少. ...
- mysql中利用sql语句修改字段名称,字段长度等操作(亲测)
在网站重构中,通常会进行数据结构的修改,所以添加,删除,增加mysql表的字段是难免的,有时为了方便,还会增加修改表或字段的注释,把同字段属性调整到一块儿.这些操作可以在phpmyadmin或者别的m ...
- mysql字段重命名_MySQL中使用SQL语句对字段进行重命名
MySQL中,如何使用SQL语句来对表中某一个字段进行重命名呢?我们将使用alter table 这一SQL语句. 重命名字段的语法为:alter table change . 现在我们来尝试把tes ...
- oracle report builder 6i下载,oracle report builder 6i - 数据模型中的SQL查询代码
我是Vijetha,我正在研究报告6i,我很陌生 . 我有以下查询 . 在front_end中,在Reports Parameter中,当用户单击"运行"按钮时,它将询问START ...
- sql查询某字段重复的数据
sql查询某字段重复的数据 最近老是遇到添加新的约束问题,其中就有要求数据不能重复,那么以前哪些测试数据就不方便改了,但是又不能删除,所以为了防止重复,我们只能查询出来一个个改了,那么查询的Sql语句 ...
- PL/SQL 查询的字段显示不全
问题描述: PL/SQL 查询的字段显示不全. 问题原因: plsql字符编码是"AMERICAN_AMERICA.ZHS16GBK" select userenv('langua ...
- java绑定变量怎么加_在JAVA 源程序中编写SQL语句时使用ORACLE 绑定变量
在JAVA中的SQL 语句的编写方面,没有使用ORACLE 绑定变量,很大程度上降低了数据库的性能,表现在两个方面: 1.SQL语句硬分析(Hard Parse)太多,严重消耗CPU资源,延长了SQL ...
最新文章
- windows远程桌面如果超出最大连接数, 使用命令行mstsc /console登录即可
- 神奇的输入 while(cin....)如何在遇见换行之后进入下一层循环读入
- 对如何使用WaveDrom画波形图的研究(案例分解分析)
- Swift 注释规范和文档注释
- linux给用户赋权限_linux/unix的用户与权限
- linux编译安装zabbix,Linux安装zabbix--CentOS7.3
- .net读写配置文件
- Redis的数据类型之String
- Python之socketserver模块和验证客户端链接的合法性
- .NET Core中的CSV解析库
- Spring精华问答 | Spring框架有哪些主要模块?
- Mongo db 与mysql 语法比较
- 车险对方全责理赔要自己垫付吗?
- 为什么数据库使用有序索引,而程序员却在使用哈希表?
- Candy leetcode java
- h264和h265视频流SDP描述详解
- 51 TMOD、TCON设置定时
- linux-网络安全防火墙
- css样式border-radius学习-画出水滴
- 非空子集的生成(二进制法)
热门文章
- 读取db服务器信息出错,尝试读取foxpro dbf并获取错误:无法初始化链接服务器的OLE DB提供程序“MSDASQL”的数据源对象“(空)”...
- 【草稿待续】统一的嵌入式软件编程模型——驱动
- kettle spoon判断增量更新_Kettle增量更新设计技巧
- 记录kettle spoon.bat 无法启动 (系统找不到指定的路径。) 只有无限接近死亡 才能领悟真滴
- 毕业设计之 --- 在线考试系统
- ubuntu系统中用c语言编写简单程序
- 类与类图,以及类间关系
- python 画饼图
- CSS外部字体引入方式
- 世事洞明职场“行”(上篇)——刘墉力作《我不是教你诈》花絮采撷