在MySQL中,我们可以使用IS NULL和IS NOT NULL来判断字段是否为空。IS NULL用于判断字段的值是否为NULL,返回值为True或False。IS NOT NULL则用于判断字段的值是否不为NULL,同样返回True或False。
-- 创建一个测试表
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
-- 插入示例数据
INSERT INTO customers (id, name, age) VALUES
(1, 'John Doe', NULL),
(2, 'Jane Smith', 25),
(3, NULL, 30);
-- 判断字段是否为空
SELECT name FROM customers WHERE age IS NULL;
SELECT name FROM customers WHERE age IS NOT NULL;
-- 测试IS NULL
SELECT CASE
WHEN (age IS NULL) THEN 'Age is NULL'
ELSE 'Age is not NULL'
END AS result FROM customers;
-- 测试IS NOT NULL
SELECT CASE
WHEN (age IS NOT NULL) THEN 'Age is not NULL'
ELSE 'Age is NULL'
END AS result FROM customers;
除了使用IS NULL和IS NOT NULL,我们还可以使用COALESCE函数来判断字段是否为空。COALESCE函数接受多个参数,返回第一个非NULL参数的值。如果所有参数都为NULL,则返回NULL。
-- 使用COALESCE判断字段是否为空
SELECT name FROM customers WHERE COALESCE(age, '') = '';
-- 返回第一个非NULL参数的值
SELECT COALESCE(NULL, 'Hello', 'World'); -- 输出Hello
SELECT COALESCE(NULL, NULL, NULL); -- 输出NULL
-- 使用COALESCE函数进行非空判断
SELECT CASE
WHEN COALESCE(age, '') = '' THEN 'Age is NULL'
ELSE 'Age is not NULL'
END AS result FROM customers;
IFNULL函数接受两个参数,如果第一个参数不为NULL,则返回第一个参数的值;如果第一个参数为NULL,则返回第二个参数的值。IFNULL函数常用于对字段进行非空处理。
-- 使用IFNULL函数进行非空处理
SELECT IFNULL(name, 'N/A') FROM customers;
-- 使用IFNULL函数进行非空处理
SELECT IFNULL(name, 'N/A') FROM customers;
NULLIF函数接受两个参数,如果两个参数的值相等,则返回NULL;如果两个参数的值不相等,则返回第一个参数的值。NULLIF函数常用于对字段进行非空判断。
-- 使用NULLIF函数进行非空判断
SELECT NULLIF(age, 0) FROM customers;
-- 使用NULLIF函数进行非空判断
SELECT CASE
WHEN NULLIF(age, 0) IS NULL THEN 'Age is NULL'
ELSE 'Age is not NULL'
END AS result FROM customers;