SQL NULL 函数
在SQL(结构化查询语言)中,NULL是一个特殊的值,表示缺失或未知的值。处理NULL值时,SQL提供了多种函数来帮助用户更有效地操作数据。本文将介绍一些常用的SQL NULL函数,包括IS NULL
、IS NOT NULL
、COALESCE
、NULLIF
和IFNULL
(或IF ISNULL
),并给出示例说明它们的使用方法。
1. IS NULL
和 IS NOT NULL
IS NULL
和IS NOT NULL
是用于检查字段是否为NULL或非NULL的谓词。
IS NULL
:如果指定的字段为NULL,则返回true。IS NOT NULL
:如果指定的字段为非NULL,则返回true。
示例
假设我们有一个名为employees
的表,其中包含salary
字段。要查找所有未设置薪资的员工,可以使用IS NULL
:
SELECT * FROM employees WHERE salary IS NULL;
要查找所有已设置薪资的员工,可以使用IS NOT NULL
:
SELECT * FROM employees WHERE salary IS NOT NULL;
2. COALESCE
COALESCE
函数返回参数列表中的第一个非NULL值。如果所有参数都为NULL,则返回NULL。
示例
假设我们有一个名为orders
的表,其中包含discount
和coupon
字段。要为每个订单计算最终折扣(优先使用discount
,如果为NULL,则使用coupon
),可以使用COALESCE
:
SELECT order_id, COALESCE(discount, coupon) AS final_discount FROM orders;
3. NULLIF
NULLIF
函数比较两个表达式。如果它们相等,则返回NULL;否则返回第一个表达式。
示例
假设我们有一个名为products
的表,其中包含price
和discount_price
字段。要查找所有折扣价格与原价不同的产品,可以使用NULLIF
:
SELECT * FROM products WHERE price <> NULLIF(discount_price, price);
4. IFNULL
(或IF ISNULL
)
IFNULL
函数是MySQL特有的,而IF ISNULL
是SQL Server特有的。它们都用于检查第一个参数是否为NULL,如果是,则返回第二个参数;否则返回第一个参数。
示例
假设我们有一个名为customers
的表,其中包含email
和phone
字段。要为每个客户返回首选联系方式(优先使用email
,如果为NULL,则使用phone
),可以使用IFNULL
:
SELECT customer_id, IFNULL(email, phone) AS primary_contact FROM customers;
或者,在SQL Server中,可以使用IF ISNULL
:
SELECT customer_id, ISNULL(email, phone) AS primary_contact FROM customers;
总结
SQL NULL函数是处理数据库中缺失或未知值的强大工具。通过使用IS NULL
、IS NOT NULL
、COALESCE
、NULLIF
和IFNULL
(或IF ISNULL
),可以更灵活地操作数据,确保查询结果的准确性和可靠性。