SQL中的NVL()函数是一个空值转换函数,其语法为:NVL(expr1, expr2)。如果expr1为空值,则NVL()函数返回expr2的值,否则返回expr1的值。该函数的目的是将空值转换为实际的值。expr1和expr2的数据类型必须为同一类型,可以是数字型、字符型和日期型。

以下是一些NVL()函数的例子:

  • 对于数字型:NVL(comm, 0),如果comm为空值,则返回0,否则返回comm的值。
  • 对于字符型:NVL(TO_CHAR(comm), ‘No Commission’),如果comm为空值,则返回字符串’No Commission’,否则返回comm的字符串值。
  • 对于日期型:NVL(hiredate, ‘31-DEC-99’),如果hiredate为空值,则返回日期’31-DEC-99’,否则返回hiredate的日期值。

除了NVL()函数外,SQL还有一个类似的函数NVL2(),其语法为:NVL2(expr1, expr2, expr3)。如果expr1为空值,则返回expr3的值,否则返回expr2的值。

以下是一个NVL2()函数的例子:

  • NVL2(comm, ‘sal+comm’, sal),如果comm为空值,则返回sal的值,否则返回sal+comm的值。

例子:

select   ename,NVL(TO_char(comm), ename||' is not a salesperson!') AS COMMISSION from emp 

sql中nvl和nvl2的区别

NVL(表达式1,表达式2)

如果表达式1为空值,NVL返回值为表达式2的值,否则返回表达式1的值。该函数的目的是把一个空值(null)转换成一个实际的值。其表达式的值可以是数字型、字符型和日期型。但是表达式1和表达式2的数据类型必须为同一个类型

NVL2(表达式1,表达式2,表达式3)

如果表达式1为空,返回值为表达式3的值。如果表达式1不为空,返回值为表达式2的值

select '' from dual;
--结果: ''
select nvl('',0) from dual;
--结果: 0
select nvl2('','1','2') from dual;
--结果:2
select nvl2('0','1','2') from dual;
--结果:1

到此这篇关于SQL中NVL()函数的用法的文章就介绍到这了,更多相关SQL NVL()函数内容请搜索本网站以前的文章或继续浏览下面的相关文章希望大家以后多多支持本网站!

您可能感兴趣的文章:

  • 深入浅析Orcale的nvl函数和SQL Server的isnull函数
  • 浅谈Mysql中类似于nvl()函数的ifnull()函数
  • 浅谈mysql可有类似oracle的nvl的函数