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

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 部件 流程 SQL
查看: 1935|回复: 9
打印 上一主题 下一主题

[分享] SQL的NULL函数

[复制链接]

348

主题

3572

帖子

9378

积分

论坛元老

Rank: 8Rank: 8

积分
9378
跳转到指定楼层
楼主
发表于 2020-3-30 23:33:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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()函数呢??请听下回分解....


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复

使用道具 举报

348

主题

3572

帖子

9378

积分

论坛元老

Rank: 8Rank: 8

积分
9378
沙发
 楼主| 发表于 2020-3-30 23:34:04 | 只看该作者
书山有路勤为径,学海无涯苦作舟
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

198

主题

1313

帖子

3784

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3784
板凳
发表于 2020-3-30 10:39:36 | 只看该作者
这些在实际使用中很有用哈。现在各种数据库的都要掌握些。书到用时方恨少,平常积累用时就轻松。
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
地板
发表于 2020-4-2 13:30:38 | 只看该作者
万望 发表于 2015-10-30 23:34
书山有路勤为径,学海无涯苦作舟

对联都用山了哦!
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9378

积分

论坛元老

Rank: 8Rank: 8

积分
9378
5#
 楼主| 发表于 2020-4-2 17:59:08 | 只看该作者

废话,俺是文艺青年
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9378

积分

论坛元老

Rank: 8Rank: 8

积分
9378
6#
 楼主| 发表于 2020-4-2 18:03:18 | 只看该作者
人生并不像火车要通过每个站似的经过每一个生活阶段。人生总是直向前行走,从不留下什么。

点评

还是会留下点东西的,比如你这么多年制造的生活垃圾  详情 回复 发表于 2020-4-2 18:34
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9378

积分

论坛元老

Rank: 8Rank: 8

积分
9378
7#
 楼主| 发表于 2020-4-2 18:03:28 | 只看该作者
人生并不像火车要通过每个站似的经过每一个生活阶段。人生总是直向前行走,从不留下什么。
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

542

主题

5916

帖子

1万

积分

作者

Rank: 7Rank: 7Rank: 7

积分
13589
8#
发表于 2020-4-2 18:34:16 | 只看该作者
万望 发表于 2015-11-2 18:03
人生并不像火车要通过每个站似的经过每一个生活阶段。人生总是直向前行走,从不留下什么。

还是会留下点东西的,比如你这么多年制造的生活垃圾
回复 支持 反对

使用道具 举报

328

主题

3738

帖子

8566

积分

作者

Rank: 7Rank: 7Rank: 7

积分
8566
QQ
9#
发表于 2020-4-3 10:55:04 | 只看该作者
万望 发表于 2015-11-2 17:59
废话,俺是文艺青年

哟哟,不得了哦,文艺青年!
回复 支持 反对

使用道具 举报

348

主题

3572

帖子

9378

积分

论坛元老

Rank: 8Rank: 8

积分
9378
10#
 楼主| 发表于 2020-4-3 12:03:35 | 只看该作者
张兴康 发表于 2015-11-2 18:34
还是会留下点东西的,比如你这么多年制造的生活垃圾

你在说你嘛
若現在就覺得失望無力,未來那麽遠妳該怎麽扛...
————————————————————————致自己
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|重庆度量科技  本站关键词:快速开发平台

GMT+8, 2024-12-23 08:12 , Processed in 0.153313 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表