前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。

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 integer
select nvl(sum(t.字段),1) into i from table t 这样就可以把获得的合计值存储到变量i中,如果查询的值为null就把它的值设置为默认的1
orcale中:
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查询时字段为空则赋值默认相关推荐

  1. oracle判断字段为空时选用别的字段_oracle中使用sql查询时字段为空则赋值默认

    转至:http://www.th7.cn/db/Oracle/201501/86125.shtml oracle 通过 nvl( )函数sql 查询时为 空值 赋默认值 oracle 函数介绍之nvl ...

  2. oracle通过值查字段,Oracle 中 根据值 查询 所在 表和字段

    -------------------- -- 这里是查询 数字型字段值 /*declare CURSOR cur_query IS select table_name, column_name, d ...

  3. oracle表中增加字段 sql语句,ORACLE中通过SQL语句(alter table)来增加、删除、修改字段...

    1.添加字段: alter table  表名  add (字段  字段类型)  [ default  '输入默认值']  [null/not null]  ; 2.添加备注: comment on ...

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

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

  5. ArcGIS——数据库空间SQL(一、oracle中使用sql空间查询及st_astext等函数出错问题)

    一.引言 将shp文件导入oracle中就想着直接用sql进行普通查询和空间查询,这样直接通过webserver发布就可以不用arcgis server直接进行接口调用了,感觉这样比较接触底层些,所以 ...

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

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

  7. ORACLE中使用SQL语句查询所有员工的职位信息,并用DISTINCT消除重复信息。

    ORACLE中使用SQL语句查询所有员工的职位信息,并用DISTINCT消除重复信息. 在sqlplus中执行下面语句: select job from emp: 显示结果如下: SQL> se ...

  8. Oracle 实验五:Oracle中的SQL使用

    实验五:Oracle中的SQL使用 一.实验目的 1.掌握SQL语言中常用系统函数: 2.掌握SQL语言的应用. 二.实验内容 1. 查询SQL中如下常用函数的使用,并举例说明(完成格式参考Lengt ...

  9. 计算机目录读取,从项目目录中读取SQL查询文件(Read SQL query file from project directory)...

    从项目目录中读取SQL查询文件(Read SQL query file from project directory) 我在Visual Studio项目中放置了3个特别大的SQL查询,位于项目目录中 ...

最新文章

  1. 卷积神经网络原理图文详解
  2. sqlalchemy 查询结果 RowProxy 转 list
  3. Windows server 2008 R2 登录密码恢复
  4. 阿里内部不显示 P 序列职级,“高 P”光环成过去式?网友:这下可以装大佬了...
  5. python银行系统-菲菲用python模拟银行系统
  6. ES5-拓展 箭头函数的this、this的优先级
  7. http和websocket共用同一端口
  8. PostgreSQL 辟谣存在任意代码执行漏洞:消息不实
  9. 拓端tecdat|matlab估计arma garch 条件均值和方差模型
  10. Web前端开发技术实验与实践(第3版)储久良编著实训4
  11. 山大计算机学院教务处,山东大学本科生院教务系统
  12. 关于Android及iOS打包
  13. 飞机精确定位模型matlab,一种精确定位飞机位置的方法与流程
  14. .net core发布到IIS上出现 HTTP 错误 500.19,错误代码:0x8007000d
  15. 山东省第三届数据应用创新创业大赛颁奖典礼在烟台举办
  16. 神经网络之父Hinton介绍及其论文介绍
  17. 软件测试时印象深刻的bug案例,请问你遇到过哪些印象深刻的bug,接口测试出现bug的原因有哪些?...
  18. mysql状态表 历史记录设计表_常见数据库设计(2)——历史数据问题之单记录变更...
  19. Python 入门 —— Python 面向对象:类的创建及其基本内置方法的使用
  20. codesys 串口通讯实例_串口通讯例子,(已调试成功可以接收数据)

热门文章

  1. 存储过程排版工具_安利一款比Evernote更为实用的云笔记工具,不容错过
  2. 数据结构 - 递归 回溯算法(八皇后问题)
  3. REVERSE-PRACTICE-BUUCTF-21
  4. 【HDU - 4784】Dinner Coming Soon(记忆化搜索bfs,dp)
  5. 【牛客 - 331G】炫酷数字(反素数打表 或 扩展埃式筛法,结论)
  6. 【UVA - 10154 】Weights and Measures (贪心排序,dp,类似0-1背包,状态设定思维)
  7. 【UVA - 1335】Beijing Guards (贪心,二分)
  8. C 的Pair用法分类整理(精)
  9. python 导入csv文件到oracle_python将文件夹下的所有csv文件存入mysql和oracle数据库
  10. php dns刷新,Windows DNS缓存自动刷新