zoukankan      html  css  js  c++  java
  • sql语句中判断空值的函数

    COALESCE()函数
    主流数据库系统都支持COALESCE()函数,这个函数主要用来进行空值处理,其参数格式如下: 
    COALESCE ( expression,value1,value2……,valuen) 
    COALESCE()函数的第一个参数expression为待检测的表达式,而其后的参数个数不定。
    COALESCE()函数将会返回包括expression在内的所有参数中的第一个非空表达式。

    如果expression不为空值则返回expression;否则判断value1是否是空值,

    如果value1不为空值则返回value1;否则判断value2是否是空值,

    如果value2不为空值则返回value2;……以此类推,
    如果所有的表达式都为空值,则返回NULL。 


    我们将使用COALESCE()函数完成下面的功能,返回人员的“重要日期”:

    如果出生日期不为空则将出生日期做为“重要日期”,如果出生日期为空则判断注册日期是否为空,如果注册日期不为空则将注册日期做为“重要日期”,如果注册日期也为空则将“2008年8月8日”做为“重要日期”。实现此功能的SQL语句如下: 
    MYSQL、MSSQLServer、DB2: 
     

    1. SELECT FName,FBirthDay,FRegDay, 
    2. COALESCE(FBirthDay,FRegDay,'2008-08-08')  AS ImportDay  
    3. FROM T_Person 


    Oracle: 
     

    1. SELECT FBirthDay,FRegDay,  
    2. COALESCE(FBirthDay,FRegDay,TO_DATE('2008-08-08', 'YYYY-MM-DD HH24:MI:SS'))  
    3. AS ImportDay  
    4. FROM T_Person 


      执行完毕我们就能在输出结果中看到下面的执行结果: 

    1. FName  FBirthDay  FRegDay  ImportDay 
    2. Tom  1981-03-22 00:00:00  1998-05-01 00:00:00  1981-03-22 00:00:00 
    3. Jim  1987-01-18 00:00:00  1999-08-21 00:00:00  1987-01-18 00:00:00 
    4. Lily  1987-11-08 00:00:00  2001-09-18 00:00:00  1987-11-08 00:00:00 
    5. Kelly  1982-07-12 00:00:00  2000-03-01 00:00:00  1982-07-12 00:00:00 
    6. Sam  1983-02-16 00:00:00  1998-05-01 00:00:00  1983-02-16 00:00:00 
    7. Kerry  <NULL>  1999-03-01 00:00:00  1999-03-01 00:00:00 
    8. Smith  <NULL>  <NULL>  2008-08-08 
    9. BillGates  1972-07-18 00:00:00  1995-06-19 00:00:00  1972-07-18 00:00:00 


    这里边最关键的就是Kerry和Smith这两行,可以看到这里的计算逻辑是完全符合我们的
    需求的。

    COALESCE()函数可以用来完成几乎所有的空值处理,不过在很多数据库系统中都提供了它的简化版,这些简化版中只接受两个变量,其参数格式如下: 
    MYSQL: 
      IFNULL(expression,value) 
    MSSQLServer: 
      ISNULL(expression,value) 
    Oracle: 
      NVL(expression,value) 

    这几个函数的功能和COALESCE(expression,value)是等价的。

    比如SQL语句用于返回人员的“重要日期”,如果出生日期不为空则将出生日期做为“重要日期”,如果出生日期为空则返回注册日期的值: 
    MYSQL: 
    SELECT FBirthDay,FRegDay,  
    IFNULL(FBirthDay,FRegDay)  AS ImportDay  
    FROM T_Person 
    MSSQLServer: 
    SELECT FBirthDay,FRegDay,  
    ISNULL(FBirthDay,FRegDay)  AS ImportDay  
    FROM T_Person 
    Oracle: 
    SELECT FBirthDay,FRegDay,  
    NVL(FBirthDay,FRegDay)  AS ImportDay  
    FROM T_Person 

  • 相关阅读:
    websocket 初识
    JavaScript 系列博客(四)
    JavaScript 系列博客(三)
    JavaScript 系列博客(二)
    JavaScript 系列博客(一)
    前端(八)之形变
    前端(七)之动画与阴影
    java变量、数据类型
    js简单的获取与输出
    Eclipse字体修改
  • 原文地址:https://www.cnblogs.com/mark5/p/11527266.html
Copyright © 2011-2022 走看看