数据库中的 NVL() 方法怎么用 ?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中的 NVL() 方法怎么用 ?相关的知识,希望对你有一定的参考价值。

1、nvl(exp1,exp2);作用是如果表达式exp1为空则返回exp2表达式,如果exp1表达式不为空则返回exp1表达式。

2、但nvl函数有一个前提条件是两个参数的数据类型要一样,不然会报错误。如下图由于comm是数字类型,所以第二个参数不能是其它类型。

3、nvl2函数语法nvl2(exp1,exp2,exp3);这个函数需要有三个参数。它的使用是如果exp1为空则返回exp3,如果exp1不为空则返回exp2。

4、但有一点需要注意的是nvl2函数中exp2与exp3数据类型要一样,不然也会报错。

5、但nvl2函数另外一点也需要注意,就是当exp2与exp3两个参数数据类型不一样的时候,exp3参数数据类型会转换为exp2数据类型,但前提是可以进行转换才可以,如果不能进行转换是会报错误的。

6、nullif函数语法,nullif(exp1,exp2);它的作用是如果exp1与exp2两个参数的值相等则返回空,如果不相等则返回exp1,同样两个参数的数据类型也要一样。

参考技术A Oracle/PLSQL中的函数。格式为:NVL( string1, replace_with)功能:如果string1为NULL,则NVL函数返回replace_with的值,否则返回string1的值,如果两个参数都为NULL ,则返回NULL。注意事项:string1和replace_with必须为同一数据类型,除非显式的使用TO_CHAR函数进行类型转换。例:NVL(TO_CHAR(numeric_column), 'some string') 其中numeric_column代指某个数字类型的值。例:nvl(aaa777,0) > 0NVL(aaa777, 0) 的意思是 如果 aaa777 是NULL, 则取 0值通过查询获得某个字段的合计值,如果这个值为null将给出一个预设的默认值例如:select nvl(sum(t.aa),1) from tb_t t 就表示如果sum(t.aa) = NULL 就返回 1 参考技术B nvl(字段名,'判断字段如果为空的话这里填你想要替换的值')

nvl(字段,'NA')
意思如果字段为空则输出NA的字符串
参考技术C nvl(字段,xx) 如果字段为空则替换为xx。

oracle里nvl,to_char,decode这些函数怎么用啊?

  Oracle提供了一些逻辑判断函数,这些函数可以在查询中使用。

1. nvl :针对空值进行测试

    函数原型为:NVL(testValue,SubstituteValue)

    常见的用法是  Select max(score) From SC Where Name=‘Jerry’

    有时max(score)为空,也就是说Jerry并没有考试记录,这时我们用"No Record"标注一下:

    Select NVL(max(score),"No Record") From SC;

 

    还有一个NVL2函数跟其相似,函数原型为: NVL(testValue,SubValue1,SubValue2)

NVL2函数实现的是若testValue为NULL,返回SubValue1,否则返回SubValue2。


2.Decode函数

  Decode函数的原型为: Decode(testValue, if1, then1, if2,then2.....else).

   针对testValue进行测试,若testValue等于if1则返回then1,若testValue等于if2则返回then2,....若都没有返回,刚返回else. 示例如下:

若我们用Decode可以这样实现:

SELECT class, course,
       DECODE (student,
               \'A\', \'Anco\',
               \'B\', \'Bily\',
               \'C\', \'Candy\',
               \'D\', \'Davi\',
               \'E\', \'Eve\',
               \'F\', \'Fion\'
              ) AS en_name
  FROM studentinfo


3. to_char函数功能,就是将数值型或者日期型转化为字符型,转换过程中可以进行格式化处理,函数原型较多,示例如下:

   



参考技术A 我用一个sql语句来描述吧, select nvl(name,'无名'), to_char(time,'yyyy,mm,dd,hh,mi,ss') as 日期,decode(fettle,1,'正常',2,'禁用') from mytable;

以上是关于数据库中的 NVL() 方法怎么用 ?的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据库中nvl可以用于insert语句中吗?

Oracle使用左外连接时,左表中的一个id在右表(数据表以天为单位)中没有数据 使用nvl替换为0

Oracle nvl函数

oracle中nvl()函数有啥用啊?

oracle中nvl()函数有啥用啊?

oracle的nvl和nvl2是啥函数,两者区别是啥呢