MySQL函数——COALESCE
简介
在MySQL中,COALESCE函数用于取出一组表达式中的第一个非NULL值。如果所有表达式都为NULL,则COALESCE函数会返回NULL。
语法:
COALESCE(expression1, expression2, expression3, ...)
使用场景
COALESCE函数可以在以下场景中派上用场:
- 替换NULL值:当某一字段的值可能为NULL时,可以使用COALESCE函数将NULL值替换为其他值,以便提供更友好的查询结果。
- 设置默认值:当某一字段的值为空时,可以使用COALESCE函数为其设置默认值。
示例代码
示例1:替换NULL值
下面的示例代码演示了如何使用COALESCE函数将NULL值替换为其他值。
表格:students
id | name | age | city |
---|---|---|---|
1 | Tom | 20 | Beijing |
2 | Jerry | NULL | Shanghai |
3 | Alice | 18 | NULL |
4 | Bob | NULL | NULL |
查询语句:
SELECT id, name, COALESCE(age, 0) AS age, COALESCE(city, 'Unknown') AS city FROM students;
结果:
id | name | age | city |
---|---|---|---|
1 | Tom | 20 | Beijing |
2 | Jerry | 0 | Shanghai |
3 | Alice | 18 | Unknown |
4 | Bob | 0 | Unknown |
示例2:设置默认值
下面的示例代码演示了如何使用COALESCE函数为字段设置默认值。
表格:products
id | name | price |
---|---|---|
1 | Apple | 2.5 |
2 | Orange | NULL |
3 | Banana | 1.8 |
4 | Mango | 3.2 |
查询语句:
SELECT id, name, COALESCE(price, 0) AS price FROM products;
结果:
id | name | price |
---|---|---|
1 | Apple | 2.5 |
2 | Orange | 0 |
3 | Banana | 1.8 |
4 | Mango | 3.2 |
示例3:多表达式使用
COALESCE函数可以接受多个表达式作为参数,返回第一个非NULL值。
查询语句:
SELECT COALESCE(NULL, 1, 2, NULL, 3, NULL);
结果:
COALESCE(NULL, 1, 2, NULL, 3, NULL) |
---|
1 |
示例4:不包含NULL值
如果所有表达式都为NULL,COALESCE函数会返回NULL。
查询语句:
SELECT COALESCE(NULL, NULL, NULL, NULL);
结果:
COALESCE(NULL, NULL, NULL, NULL) |
---|
NULL |
示例5:字符串拼接
COALESCE函数对于字符串拼接也非常有用。
表格:users
id | first_name | last_name |
---|---|---|
1 | John | Doe |
2 | NULL | Smith |
3 | Emma | NULL |
4 | NULL | NULL |
查询语句:
SELECT id, COALESCE(CONCAT(first_name, ' ', last_name), 'Unknown') AS full_name FROM users;
结果:
id | full_name |
---|---|
1 | John Doe |
2 | Unknown |
3 | Emma Unknown |
4 | Unknown |