度量快速开发平台-专业、快速的软件定制快开平台

标题: SQL的NULL函数 [打印本页]

作者: 王爱东    时间: 2020-3-30 10:39
这些在实际使用中很有用哈。现在各种数据库的都要掌握些。书到用时方恨少,平常积累用时就轻松。
作者: 万望    时间: 2020-3-30 23:33
标题: SQL的NULL函数
SQL ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数

请看下面的 "roducts" 表:

  
排序
  
产品名称
单价
库存
已订购
1
电脑
5889
452
32
2
打印机
1200
552

3
手机
1799
129
23


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

我们使用如下 SELECT 语句:

  1. SELECT ProductName,UnitPrice * (UnitsInStock+UnitsOnOrder)
  2. FROM Products
复制代码

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

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

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

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

下面,如果 "UnitsOnOrder" 是 NULL,则不利于计算,因此如果值是 NULL 则 ISNULL() 返回 0。


SQL Server :
  1. SELECT ProductName,UnitPrice * (UnitsInStock+ISNULL(UnitsOnOrder,0))
  2. FROM Products
复制代码
Oracle:
Oracle 没有 ISNULL() 函数。不过,我们可以使用 NVL() 函数达到相同的结果:
  1. SELECT ProductName,UnitPrice * (UnitsInStock+NVL(UnitsOnOrder,0))
  2. FROM Products
复制代码
MySQL

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

在 MySQL 中,我们可以使用 IFNULL() 函数,就像这样:

  1. SELECT ProductName,UnitPrice * (UnitsInStock+IFNULL(UnitsOnOrder,0))
  2. FROM Products
复制代码

或者我们可以使用 COALESCE() 函数,就像这样:

  1. SELECT ProductName,UnitPrice * (UnitsInStock+COALESCE(UnitsOnOrder,0))
  2. FROM Products
复制代码

那么什么是COALESCE()函数呢??请听下回分解....



作者: 万望    时间: 2020-3-30 23:34
书山有路勤为径,学海无涯苦作舟
作者: 陈晓龙    时间: 2020-4-2 13:30
万望 发表于 2015-10-30 23:34
书山有路勤为径,学海无涯苦作舟

对联都用山了哦!
作者: 万望    时间: 2020-4-2 17:59
陈晓龙 发表于 2015-11-2 13:30
对联都用山了哦!

废话,俺是文艺青年
作者: 万望    时间: 2020-4-2 18:03
人生并不像火车要通过每个站似的经过每一个生活阶段。人生总是直向前行走,从不留下什么。
作者: 万望    时间: 2020-4-2 18:03
人生并不像火车要通过每个站似的经过每一个生活阶段。人生总是直向前行走,从不留下什么。
作者: 张兴康    时间: 2020-4-2 18:34
万望 发表于 2015-11-2 18:03
人生并不像火车要通过每个站似的经过每一个生活阶段。人生总是直向前行走,从不留下什么。

还是会留下点东西的,比如你这么多年制造的生活垃圾
作者: 陈晓龙    时间: 2020-4-3 10:55
万望 发表于 2015-11-2 17:59
废话,俺是文艺青年

哟哟,不得了哦,文艺青年!
作者: 万望    时间: 2020-4-3 12:03
张兴康 发表于 2015-11-2 18:34
还是会留下点东西的,比如你这么多年制造的生活垃圾

你在说你嘛




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2