MySQL查询字段为空给默认值

在使用MySQL查询数据时,有时候我们需要处理一些字段为空的情况,给这些字段一个默认值。本文将详细介绍如何在MySQL查询的时候对字段为空给默认值。
情景描述
假设有一个员工表employee,其中包含字段id、name和age,我们需要查询员工的信息,并且当字段age为空时,给字段age一个默认值。
示例数据
为了方便演示,我们创建一个包含几条员工信息的示例数据表employee。
首先创建示例数据表employee并插入数据:
CREATE TABLE employee (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
);
INSERT INTO employee (id, name, age) VALUES
(1, 'Alice', 25),
(2, 'Bob', NULL),
(3, 'Eve', 28);
查询employee表的数据:
SELECT * FROM employee;
运行以上查询语句后,我们可以看到employee表中的数据如下:
| id | name | age |
|---|---|---|
| 1 | Alice | 25 |
| 2 | Bob | NULL |
| 3 | Eve | 28 |
查询字段为空给默认值
当我们查询employee表时,希望将字段age为空的员工的age字段值设置为默认值30,我们可以使用IFNULL函数来实现这一目的。
IFNULL函数用于判断字段是否为NULL,如果字段为NULL则返回给定的默认值,如果字段不为NULL则返回字段本身。
SELECT id, name, IFNULL(age, 30) AS age FROM employee;
运行以上查询语句后,我们可以得到如下结果:
| id | name | age |
|---|---|---|
| 1 | Alice | 25 |
| 2 | Bob | 30 |
| 3 | Eve | 28 |
可以看到,当字段age为空时,查询结果给了age字段一个默认值30。
使用CASE语句
除了IFNULL函数外,我们还可以使用CASE语句来实现查询字段为空给默认值的功能。
SELECT id, name,
CASE
WHEN age IS NULL THEN 30
ELSE age
END AS age
FROM employee;
运行以上查询语句后,得到与IFNULL函数相同的结果:
| id | name | age |
|---|---|---|
| 1 | Alice | 25 |
| 2 | Bob | 30 |
| 3 | Eve | 28 |
在这里,CASE语句判断字段age是否为空,如果为空则返回默认值30,否则返回字段本身。
总结
以上是在MySQL查询字段为空给默认值的两种方法,分别使用IFNULL函数和CASE语句。在实际应用中,可以根据自己的需求选择合适的方法来处理字段为空的情况,让查询结果更符合预期。
极客笔记