MySQL NULL 映射
简介:在本教程中,您将学习如何将
NULL
值映射到其他有意义的值。
EFCodd博士是数据库关系模型的创建者,他在关系数据库理论中引入了NULL
这一概念。根据Dr.EFCodd,NULL
意味着未知的价值或缺少信息。
MySQL还支持NULL
代表丢失或不适用信息的概念。
在数据库表中,存储包含NULL
值的数据。当您以报告的形式向用户显示数据时,显示NULL
值是没有意义的。
为了使报告更具可读性和可理解性,您必须将NULL
值显示为其他值,例如未知,缺失或不可用(N / A)。为此,您可以使用IF函数。
IF函数的语法如下:
IF(exp,exp_result1,exp_result2);如果
exp
求值为TRUE
(when exp <> 0
和exp <> NULL
),则IF
函数返回exp_result1
值,否则返回exp_result2
值。
IF
函数的返回值可以是字符串或数字,具体取决于exp_result1
和exp_result2
表达式。
让我们通过一些例子来练习,以便更好地理解。
我们将使用示例数据库中的customers
表。
以下是customers
表中包含customername
state
和的部分数据country
:
SELECT customername, state, country FROM customers ORDER BY country;
+------------------------------------+---------------+--------------+ | customername | state | country | +------------------------------------+---------------+--------------+ | Australian Collectors, Co. | Victoria | Australia | | Anna's Decorations, Ltd | NSW | Australia | | Souveniers And Things Co. | NSW | Australia | | Australian Gift Network, Co | Queensland | Australia | | Australian Collectables, Ltd | Victoria | Australia | | Salzburg Collectables | NULL | Austria | | Mini Auto Werke | NULL | Austria | | Petit Auto | NULL | Belgium | | Royale Belge | NULL | Belgium | | Canadian Gift Exchange Network | BC | Canada | ...从上面的结果集中,您可以看到某些客户无法使用状态值。您可以使用
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 | | Anna's 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 | | Canadian Gift Exchange Network | BC | Canada | ...除IF函数外,MySQL还提供了IFNULL 函数,允许您
NULL
直接处理值。以下是IFNULL
函数的语法:
IFNULL(exp,exp_result);如果求值为某个值,则
IFNULL
函数返回exp_result
表达式exp
的NULL
值,否则返回exp
表达式的值。
以下查询使用IFNULL
函数显示NULL
为未知如下:
SELECT customername, IFNULL(state,"N/A") state, country FROM customers ORDER BY country;
+------------------------------------+---------------+--------------+ | customername | state | country | +------------------------------------+---------------+--------------+ | Australian Collectors, Co. | Victoria | Australia | | Anna's 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 | | Canadian Gift Exchange Network | BC | Canada | ...在本教程中,您学习了如何使用
IF
和IFNULL
函数将NULL值映射到其他更有意义的值,以便以可读的方式呈现数据。