在Mysql中,如何将NULL值映射到其他有意义的值

时间:2019-11-20 08:52:28  来源:igfitidea点击:

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

数据库关系模型的创建者E.F. Codd博士在关系数据库理论中引入了NULL概念。
根据Dr.E.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表达式。

让我们通过一些示例进行练习,以更好地理解。

我们将使用示例数据库中的customers表。

以下是客户表中的部分数据,其中包括客户名的州和国家:

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

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

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

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

IFNULL(exp,exp_result);

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

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

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

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