SQL Null函数
NULL 函数用于在数据库表中执行对NULL值的操作。
当我们的数据缺失或所需数据不可用时,NULL值类似于数据库中的占位符。它是一个灵活的值,不属于任何实际的数据类型,并且可以放在任何数据类型的列中,例如字符串、整数、varchar等。
以下是NULL值的各种特性:
- NULL值与零值或包含空格的字段是不同的。具有NULL值的记录是在记录创建过程中留空的记录。
- NULL值有助于消除数据的不明确性。同时,NULL值有助于在列中保持统一的数据类型。
如果用户在手机号码列中输入了他们的出生日期,当需要联系时可能会产生歧义。为了解决这个问题,我们必须在插入数据之前检查数据,并使用NULL函数将不是日期数据类型的数据更新为NULL。
SQL中的NULL函数
有了识别NULL数据的能力,我们可以对其执行类似于SQL中的聚合方法的操作。它们包括:
- ISNULL()
- COALESCE()
- NULLIF()
- IFNULL()
让我们逐一详细讨论这些函数。
ISNULL()函数
SQL服务器的 ISNULL() 函数允许在表达式为空时返回替代值。或者我们可以说它用于替换NULL值。
此函数可用于需要更新表的情况。如果最终找到一个适当的值来填充记录中的空白空间,就会替换NULL值。
语法
ISNULL() 函数的语法如下:
示例
在下面的示例中,我们将客户表中的薪水的NULL值替换为”500000″。
假设我们使用以下查询创建了一个名为Customers的表,该表包含客户的个人详细信息,包括姓名、年龄、地址和薪水等。
现在,使用以下的INSERT语句将值插入到这个表中 –
表将被创建为-
以下是替换空值的查询:
输出
执行上述查询后,我们得到”salary”列,并且空值将被替换为”500,000″,正如我们在结果列中看到的那样。
COALESCE() 函数
SQL服务器的 COALESCE() 函数返回其参数中第一个出现的非NULL表达式。如果所有表达式都为NULL,则COALESCE()函数将返回NULL。
在COALESCE()函数中,整数始终先进行评估,而整数后面跟着一个字符表达式将产生一个整数作为输出。
语法
以下是 COALESCE() 函数的语法-
示例
在下面的示例中,我们使用以下查询来返回第一个出现的非空值。
输出
在执行上述查询时,我们得到了”tutorialspoint”作为结果,因为它是第一个紧随NULL值之后的字符串,正如我们可以在随后的结果列中看到的那样。
示例
在下面的示例中,我们使用 COALESCE() 函数来检索”姓名”和”薪水”,将参数”年龄”和”薪水”传递给coalesce()函数,并作为结果。如下面的查询所示−
输出
执行上述查询后,我们获取到姓名和工资,并使用COALESCE()函数比较工资和年龄。它将返回一个不为空的值作为结果,在输出表中可以看到。
NULLIF()函数
NULLIF()函数接受两个参数。如果两个表达式相同,则返回NULL。否则,返回第一个参数。我们可以直接在SELECT、WHERE和GROUP BY等子句中使用这个函数。
语法
以下是NULLIF()函数的语法-
示例
在下面的示例中,我们使用WHERE子句创建了一个查询,利用NULLIF()函数从Customers表中返回“name”和“age”。我们将年龄和薪水作为NULLIF()函数的参数。
输出
在执行以上查询时,我们使用NULLIF()函数检索名称和年龄。我们将年龄返回作为结果,因为NULLIF()函数在两个参数不相同时返回第一个参数。如下所示的输出表中可以看到:
IFNULL()函数
IFNULL()函数仅在MySQL中可用,而不在SQL服务器中可用。它接受两个参数;如果第一个参数不为null,则返回第一个参数;否则,返回第二个参数。通常用于将NULL值替换为另一个值。根据使用的上下文,它返回字符串或数值。
语法
IFNULL()函数的语法如下所示:
示例
在下面的示例中,我们正在获取ID、NAME、AGE和SALARY,并将空的薪水替换为”550000″,并使用别名Result。正如我们在下面的查询中所看到的-
输出
在执行上述查询时,我们得到了我们正在获取的所有详细信息。如下面的输出表所示−