sql 中 nullif 用法_sql 中 nullif 函数处理空值技巧

SQL 中使用 NULLIF 函数来比较两个值。
如果相同则返回NULL;否则,它返回第一个值。

简单来说,如果两个值相同则返回NULL,如果不同则返回第一个值。

示例: 选择 NULLIF(1 0, 1 0);结果为 NULL。
选择 NULLIF(1 0, 2 0);结果是1 0
主要用在两个地方: 1 . 避免除零错误。
将 SQL 除以 0 会导致错误,可以使用 NULLIF 来避免。
例如: 从表中选择值 / NULLIF(除数, 0); 如果除数为0,则自动为NULL,除法结果也为NULL,不会报错。

2 数据清洗 将一些假空值(例如''、'N/A'、0)合并为NULL。
例如: 更新配置文件 SET bio = NULLIF(bio, ''); 将所有空 BIOS 更改为 NULL。

与案例相比: NULLIF 可以在一行代码中完成,但 CASE 需要多行代码。
有时 NULLIF 更快。

但只能用于相等比较,不能用于复杂逻辑。

sql如何使用ifnull处理空值 sqlifnull处理空值的基础操作方法

严格来说,IFNULL函数是SQL中处理NULL值的神器。
其实很简单。
就像一个聪明的看门人。
如果发现你传递的第一个参数为NULL。
这将自动将第二帧返回给您。
我们去年做的项目中,A链接必须使用IFNULL来计算均价。
当时大约有3 000条数据。
如果我们直接计算AVG(价格);那些NULL值将被自动忽略。
显然这是不可能的。
那么我们先来说说最重要的事情。
我们将所有 NULL 价格替换为 0,而不是 AVG(IFNULL(price, 0)),以便结果准确。

还有一点,IFNULL对于统计客户订单总量也非常有用。
例如,我有一个 LEFT JOIN 查询,它将吸引所有客户,即使他们尚未下订单。
此时,如果订单数量为NULL;直接显示NULL是不好的。
因此,我们使用IFNULL(SUM(o.amount),0)来保证无序客户的总金额显示为0而不是NULL;这样报告看起来就更完整了。

一开始我以为IFNULL只能处理两个值,但后来我意识到这是错误的。
事实上,合并更灵活,可以处理多个值。
然而,当只需要处理两个值时,IFNULL 会更短。
等等一件事如果您不使用标准 SQL(如 Oracle 或 SQL Server)。
您可能必须使用 NVL 或 ISNULL。
它们的功能与IFNULL类似,但语法不同。

所以选择建议是:优先使用IFNULL或COALESCE(标准SQL);如果与数据库不兼容,请考虑使用 NVL 或 ISNULL。
许多人没有注意到这个事实。
应优先考虑业务逻辑,因为NULL值可以隐藏重要信息。
说实话,这很复杂。
直接替换为0或者默认值可能会隐藏问题。
最后,我想指出避免 NULL 值的一个简单陷阱,特别是在进行过多的数据质量分析时。
他们可能会透露丢失或不寻常的信息。
这时,优先进行数据修正比简单的替换更为重要。