MySql/Oracle Select语句处理缺省值null的方法IFNULL/NVL

MySql数据库中判断空值的方法是IFNULL,示例:

SELECT IFNULL(post_count,0) as pc FROM `custom_post_stat`;

查询结果如图:

联表查询时,方法一样:

SELECT IFNULL(a1.post_count,0) as pc FROM `custom_post_stat` AS a1;

在Oracle数据库中,处理缺省空值,用NVLNVL2。它们之间的区别如下:

  1. NVL函数:
    • 语法:NVL(expr1 expr2)
    • 功能:如果expr1为NULL,则返回expr2的值;否则返回expr1的值。
    • 示例SELECT NVL(salary, 0 FROM employees; 如果salary为空,则返回0;否则返回salary的值。
  2. NVL函数:
    • 语法:NVL2(expr1, expr2, expr3)
    • 功能:如果expr1不为NULL,则返回expr2的值;如果expr1为NULL,则返回expr3的值。 -:SELECT NVL2(manager, ‘Yes’, ‘No’) FROM employees; 如果manager_id不为空,则返回’Yes’;否则返回’No’。

总结:

  • NV函数用于进行简单的空值替换,无需指定两个不同的返回值,只有一个替代值。
  • NVL2函数则更加灵活,在需要根据空值与非空值分别返回两个不同值时使用。
  • 使用哪函数取决于你在处理空值时的具体情况和需求。

(版权归cpury.com所有,转载请注明出处。)