SQL Server COALESCE() 函数使用指南
在 SQL Server 中,COALESCE()
函数用于返回参数列表中第一个非空表达式的值。如果所有参数都为 NULL,则返回 NULL。
语法
COALESCE()
函数的语法如下:
COALESCE ( expression1, expression2, ... expression_n )
其中,expression1
、expression2
、… expression_n
是要检查的表达式。
使用场景
COALESCE()
函数在以下情况下非常有用:
- 当你需要从多个列或表达式中获取第一个非 NULL 值时,可以使用该函数。
- 当你需要将多个值合并成一个单一的值时,可以使用该函数。
示例
假设我们有一个包含学生成绩记录的表格,其中包括 Name、Chinese score、Maths score 和 English score。有时候我们需要查询每个学生的总成绩,并且如果某个科目成绩为空,则将其视为 0 分。我们可以使用 COALESCE()
函数来实现这个需求。
示例 1:计算每个学生的总成绩
假设我们有以下的学生成绩记录:
Name | Chinese | Maths | English |
---|---|---|---|
A | 78 | 90 | 85 |
B | 83 | NULL | 92 |
C | 92 | 87 | NULL |
要计算每个学生的总成绩,可以使用以下 SQL 语句:
SELECT Name, COALESCE(Chinese, 0) + COALESCE(Maths, 0) + COALESCE(English, 0) AS Total
FROM student_scores;
执行以上 SQL 语句,我们将得到以下结果:
Name | Total |
---|---|
A | 253 |
B | 175 |
C | 179 |
示例 2:从多个列中选择非空值
假设我们有一个包含产品信息的表格,其中包括产品的名称、描述和价格。有些产品没有描述,但是我们希望在查询结果中显示产品的名称和描述,如果没有描述,则显示“无描述”。
SELECT name, COALESCE(description, 'no desc') AS description, price
FROM products;
下面是一个示例输出:
name | description | price |
---|---|---|
product1 | this is a | 10.99 |
product2 | no desc | 20.99 |
product3 | this is c | 30.99 |
product4 | no desc | 40.99 |
product5 | this is e | 50.99 |
示例 3:将 NULL 值替换为其他值
假设我们有一个包含客户订单信息的表格,其中包括订单号、客户姓名和订单日期。有些订单没有日期,但是我们希望将这些订单的日期显示为“未知”。
SELECT order_id, customer_name, COALESCE(order_date, 'unknown') AS order_date
FROM orders;
下面是一个示例输出:
order_id | customer_name | order_date |
---|---|---|
1 | John | 2022-01-01 |
2 | Mary | 2022-01-02 |
3 | Bob | unknown |
4 | Alice | 2022-01-04 |
5 | Tom | unknown |
结论
COALESCE()
函数是一个非常有用的函数,它可以从多个表达式中选择第一个非空值,并且可以将 NULL 值替换为其他值。使用 COALESCE()
函数可以简化 SQL 查询语句,使代码更加简洁和易于维护。