求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Model Center   Code  
会员   
要资料
 
 

mysql教程
MySQL快速学习入门
MySQL是什么
MySQL安装
MySQL示例数据库
MySQL导入示例数据库
MySQL基础教程
MySQL查询数据
MySQL WHERE语句
MySQL插入数据
MySQL更新表数据
MySQL删除表数据
MySQL创建与删除数据库
MySQL创建表
MySQL修改表结构
MySQL重命名表
MySQL数据类型
高级部分
MySQL技巧
MySQL存储过程
MySQL视图
MySQL触发器
MySQL管理
MySQL全文搜索
MySQL函数
应用程序连接
MySQL+Node.js连接和操作
Python+MySQL连接和操作
 
 

MySQL将NULL值映射到其他有意义的值
598 次浏览
7次  

在本教程中,您将学习如何将NULL值映射到其他有意义的值。

数据库关系模型创建者 - E.F.Codd博士在关系数据库理论中引入了NULL概念。 根据Dr.E.C.F.Codd的表述,NULL表示未知值或缺少信息。

MySQL还支持NULL表示缺少或不适用信息的概念。

在数据库表中,您可能会存储包含NULL值的数据。但是如果以报表的形式向用户呈现数据时,显示NULL值是没有意义的。

要使报告更可读和可理解,必须显示NULL值作为其他有意义的值,如未知,缺失或不可用(N/A)。可以使用IF函数做到这一点。

IF函数的语法如下:

IF(exp,exp_result1,exp_result2);

如果exp计算结果为TRUE(当exp <> 0和exp <> NULL)时,IF函数返回exp_result1的值,否则返回exp_result2的值。

IF函数的返回值可以是字符串或数字,具体取决于exp_result1和exp_result2表达式。

让我们练习一些例子以更好的理解。

假设要使用示例数据库(yiibaidb)中的customers表来作演示。

以下是customers表中包含:customername, state 和 country 的部分数据:

SELECT
customername, state, country
FROM
customers
ORDER BY country;

执行上面代码,得到以下结果 -

+------------------------------------+---------------+--------------+
| customername | state | country |
+------------------------------------+---------------+--------------+
| Australian Collectors, Co. | Victoria | Australia |
| Annas Decorations, Ltd | NSW | Australia |
| Souveniers And Things Co. | NSW | Australia |
| Australian Gift Network, Co | Queensland | Australia |
|************** 此处省略了一大波数据 *********************************|
| Handji Gifts& Co | NULL | Singapore |
| Asian Shopping Network, Co | NULL | Singapore |
| SAR Distributors, Co | Pretoria | South Africa |
| Euro+ Shopping Channel | NULL | Spain |
| Diecast Collectables | MA | USA |
+------------------------------------+---------------+--------------+
122 rows in set

从上面的结果集中,您将看到state列的值不适用于某些客户。可以使用IF函数将NULL值显示为N/A:

SELECT
customername, IF(state IS NULL, 'N/A', state) state, country
FROM
customers
ORDER BY country;

执行上面查询代码,得到以下结果 -

+------------------------------------+---------------+--------------+
| customername | state | country |
+------------------------------------+---------------+--------------+
| Australian Collectors, Co. | Victoria | Australia |
| Annas Decorations, Ltd | NSW | Australia |
| Souveniers And Things Co. | NSW | Australia |
| Australian Gift Network, Co | Queensland | Australia |
| Australian Collectables, Ltd | Victoria | Australia |
| Salzburg Collectables | N/A | Austria |
| Mini Auto Werke | N/A | Austria |
| Petit Auto | N/A | Belgium |
| Royale Belge | N/A | Belgium |
|************** 此处省略了一大波数据 *********************************|
| Motor Mint Distributors Inc. | PA | USA |
| Signal Collectibles Ltd. | CA | USA |
| Diecast Collectables | MA | USA |
+------------------------------------+---------------+--------------+
122 rows in set

除了IF函数外,MySQL提供了IFNULL函数,可以直接处理NULL值。 以下是IFNULL函数的语法:

IFNULL(exp,exp_result);

重写上代码查询 -

SELECT customername,
IFNULL(state,"N/A") state,
country
FROM customers
ORDER BY country;

如果exp计算结果为NULL值,则IFNULL函数返回exp_result表达式的值,否则返回exp表达式的值。

以下查询使用IFNULL函数将NULL显示为未知,如下所示:

SELECT customername,
IFNULL(state,"N/A") state,
country
FROM customers
ORDER BY country;

执行上面查询代码,得到以下结果 -

+------------------------------------+---------------+--------------+
| customername | state | country |
+------------------------------------+---------------+--------------+
| Australian Collectors, Co. | Victoria | Australia |
| Annas Decorations, Ltd | NSW | Australia |
| Souveniers And Things Co. | NSW | Australia |
| Australian Gift Network, Co | Queensland | Australia |
| Australian Collectables, Ltd | Victoria | Australia |
| Salzburg Collectables | N/A | Austria |
| Mini Auto Werke | N/A | Austria |
| Petit Auto | N/A | Belgium |
| Royale Belge | N/A | Belgium |
|************** 此处省略了一大波数据 *********************************|
| Motor Mint Distributors Inc. | PA | USA |
| Signal Collectibles Ltd. | CA | USA |
| Diecast Collectables | MA | USA |
+------------------------------------+---------------+--------------+
122 rows in set

在本教程中,您已经学习了如何使用IF和IFNULL函数将NULL值映射到其他更有意义的值,以便以可读方式呈现数据。


您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码: 验证码,看不清楚?请点击刷新验证码 必填



598 次浏览
7次
 捐助