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 查询语句,使代码更加简洁和易于维护。