>>与软件开发有关的知识:操作系统,数据库,网络通信等 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 20439 个阅读者 刷新本主题
 * 贴子主题:  SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2019-08-18 21:14:06     消息  查看  搜索  好友  邮件  复制  引用

  

SQL  NULL 函数

SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数

     请看下面的 "Products" 表:

    
P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 Jarlsberg 10.45 16 15
2 Mascarpone 32.56 23
3 Gorgonzola 15.67 9 20


     假如 "UnitsOnOrder" 是可选的,而且可以包含 NULL 值。

     我们使用下面的 SELECT 语句:

    SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder)
    FROM Products

     在上面的范例中,如果有 "UnitsOnOrder" 值是 NULL,那么结果是 NULL。

    微软的 ISNULL() 函数用于规定如何处理 NULL 值。

    NVL()、IFNULL() 和 COALESCE() 函数也可以达到相同的结果。

    在这里,我们希望 NULL 值为 0。

   下面,如果 "UnitsOnOrder" 是 NULL,则不会影响计算,因为如果值是 NULL 则 ISNULL() 返回 0:

              SQL Server / MS Access

    SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
    FROM Products

             Oracle

    Oracle 没有 ISNULL() 函数。不过,我们可以使用 NVL() 函数达到相同的结果:

    SELECT ProductName,UnitPrice*(UnitsInStock+NVL(UnitsOnOrder,0))
    FROM Products

             MySQL

         MySQL 也拥有类似 ISNULL() 的函数。不过它的工作方式与微软的 ISNULL() 函数有点不同。

         在 MySQL 中,我们可以使用 IFNULL() 函数,如下所示:

     SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
     FROM Products

             或者我们可以使用 COALESCE() 函数,如下所示:

     SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
     FROM Products

    




程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-02-12 11:28:06 重新编辑]
  Java面向对象编程-->流程控制
  JavaWeb开发-->Servlet技术详解(Ⅲ)
  JSP与Hibernate开发-->域对象在持久化层的四种状态
  Java网络编程-->通过JDBC API访问数据库
  精通Spring-->通过Vuex进行状态管理
  Vue3开发-->绑定表单
  MySQL索引原理 - 秋慕云
  Mysql--所有版本安装以及完全卸载
  Zabbix中文使用手册
  从原理到实战:如何通过布隆过滤器防止缓存击穿
  谈谈网络通信中的 ACK、NACK 和 REX
  SQL AVG() 函数的用法
  MySQL:如何用 SELECT 语句的 WHERE 子句过滤返回的数据
  SQL查询语句的分组和排序
  解决电脑网络受限制或无连接造成无法上网的方法
  连接数据库发现大量的TIME_WAIT解决办法
  深入浅出一致性Hash原理
  深入认识二进制序列化--记一次生产事故的思考
  mysql主从复制的步骤
  为什么要分库分表?用过哪些分库分表中间件?
  MySQL核心技术点——史上最全的select加锁分析
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。