摘要:在本教程中,您将学习如何将NULL
值映射到其他有意义的值。
数据库关系模型的创建者EFCodd博士在关系数据库理论中引入了NULL
概念。根据 Dr.EFCodd 的说法, NULL
意味着未知值或丢失信息。
MySQL 还支持NULL
,它表示丢失或不适用信息的概念。
在数据库表中,您存储包含NULL
值的数据。当您以报告的形式向用户呈现数据时,显示NULL
值是没有意义的。
为了使报告更易于阅读和理解,您必须将NULL
值显示为其他值,例如未知、缺失或不可用 (N/A)。为此,您可以使用IF 函数。
IF函数的语法如下:
IF(exp,exp_result1,exp_result2);
Code language: SQL (Structured Query Language) (sql)
如果exp
计算结果为TRUE
(当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;
Code language: SQL (Structured Query Language) (sql)
从上面的结果集中,您可以看到状态值对于某些客户不可用。您可以使用IF
函数将NULL
值显示为N/A
:
SELECT
customername, IF(state IS NULL, 'N/A', state) state, country
FROM
customers
ORDER BY country;
Code language: SQL (Structured Query Language) (sql)
除了 IF 函数外,MySQL 还提供了IFNULL 允许您直接处理NULL
值的函数。以下是IFNULL
函数的语法:
IFNULL(exp,exp_result);
Code language: SQL (Structured Query Language) (sql)
如果exp
计算结果为NULL
值,则IFNULL
函数返回exp_result
表达式的值,否则返回exp
表达式的值。
以下查询使用IFNULL
函数将NULL
显示为未知,如下所示:
SELECT customername,
IFNULL(state,"N/A") state,
country
FROM customers
ORDER BY country;
Code language: SQL (Structured Query Language) (sql)
在本教程中,您学习了如何使用IF
和IFNULL
函数将 NULL 值映射到其他更有意义的值,以便以可读的方式呈现数据。