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

请看下面的 "Products" 表:

P_Id ProductName UnitPrice UnitsInStock UnitsOnOrder
1 computer 699 25 15
2 printer 365 36  
3 telephone 280 159 57

假如 "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

SQL高级教程(三十)- - SQL NULL 函数相关推荐

  1. MYSQL语句大全(SQL 高级教程)【下】

    SQL 高级教程 Drop                撤销索引.表以及数据库 DROP INDEX 命令删除表格中的索引 mysql语法:    ALTER TABLE table_name DR ...

  2. SQL 高级教程:SQL BETWEEN 操作符

    SQL 高级教程:SQL BETWEEN 操作符 BETWEEN 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围. BETWEEN 操作符 操作符 BETWEEN - AND 会 ...

  3. MYSQL语句大全(SQL 高级教程)【上】

    SQL 高级教程 Top            TOP 子句用于规定要返回的记录的数目.                    对于拥有数千条记录的大型表来说,TOP 子句是非常有用的         ...

  4. SQL系列(三)SQL使用的旁枝末节

    SQL系列(三)SQL使用的旁枝末节 首先,来揭晓上期的答案.方法不唯一,符合结果即可- -- 常规方法 with temp as (select 2 as st,5 as enunion allse ...

  5. vba ado 执行多条mysql 语句,Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结...

    原标题:Excel VBA+ADO+SQL入门教程003:SQL查询中字段技巧的总结 本章概要: 1,几个概念 1.1, 数据库和Excel工作簿 1.2,数据表和Excel工作表 1.3,记录.字段 ...

  6. mysql sql高级教程_SQL高级教程

    一.top子句 top子句用于规定要返回的记录的数目 并非所有数据库系统都支持top子句 # sqlserverSELECT TOP number|percent column_name(s) FRO ...

  7. SQL Server-聚焦深入理解动态SQL查询(三十二)

    前言 之前有园友一直关注着我快点出SQL Server性能优化系列,博主我也对性能优化系列也有点小期待,本来打算利用周末写死锁以及避免死锁系列的接着进入SQL Server优化系列,但是在工作中长时间 ...

  8. Directx11教程三十之ProjectiveTexturing(投影纹理)

    这节教程是介绍有关ProjectiveTexturing(投影纹理)技术的,结构如下 一,ProjectiveTexturing(投影纹理)的简介. ProjectiveTexturing(投影纹理) ...

  9. SQL Prompt教程:使用SQL Prompt查找SET NOCOUNT代码问题

    SQL Prompt是一款实用的SQL语法提示工具.SQL Prompt根据数据库的对象名称.语法和代码片段自动进行检索,为用户提供合适的代码选择.自动脚本设置使代码简单易读–当开发者不大熟悉脚本时尤 ...

  10. vba mysql·教程_Excel VBA ADO SQL入门教程004:SQL中的Excel表

    1. 上期我们聊了SQL常用查询语句中的字段查询,其简化版语法如下: SELECT 字段名 FROM 表名 当时我们说,FROM关键词指明了要获取字段信息的表的名称.倘若数据源是Excel表格,则需要 ...

最新文章

  1. python popen阻塞_对Python subprocess.Popen子进程管道阻塞详解
  2. 从消费端到企业端,从设备到数据:物联网市场的爆发式增长
  3. Android视图组成View
  4. Seek the Name, Seek the Fame POJ - 2752 (理解KMP函数的失配)既是S的前缀又是S的后缀的子串
  5. Vmware中的centos虚拟机克隆之后没有eth0
  6. js传参不是数字_js调用函数时传入的参数个数与函数定义时的参数个数不符时的操作...
  7. mongodb不等于某个值_MongoDB的安装以及基本增删改查命令
  8. RabbitMQ 集群搭建_02_rpm版本(linux环境)
  9. 作者:谢华美(1976-),男,就职于中国人民银行征信中心数据部
  10. 解决Docker安装MySQL不区分大小写问题
  11. c# 十六进制转为字节_如何在C#中将具有十六进制内容的字节数组转换为具有十进制的字符串...
  12. 模型微调------学习笔记
  13. 自动识别并汇总发票信息的智能机器人来啦!
  14. 关键点检测方法、人体姿态估计
  15. Xilinx ISERDESE2应用笔记及仿真实操
  16. 51单片机按键控制数码管显示0-9
  17. Node.js学习日记3
  18. Python爬虫-中华英才网登陆JS加密登陆
  19. css mix-blend,详解CSS3的mix-blend-mode属性
  20. 互联网摸鱼日报(2023-01-26)

热门文章

  1. 卷积法求解系统的零状态响应_因果系统的零状态响应的一种简易计算方法
  2. Python学习:简单的python “hello,world”程序
  3. 桌面上打开计算机有延迟感觉,电脑中右击操作反应慢如何解决|解决右键菜单弹出延迟的方法...
  4. 《科学》公布2021年度十大科学突破!
  5. pe装机时看不到电脑的硬盘
  6. 用python写一段计算autocad多段线长度的代码
  7. 交换机和路由器的基本配置
  8. 砺鹰教育之四川财经职业学院讲座——我为什么选择创业?
  9. XP sp3 安装Step7 V5.5和WinCC V7.0记录(仅用于个人)
  10. 【Eclipse下载与安装教程】