SQL Server COALESCE() 函数使用指南

在 SQL Server 中,COALESCE() 函数用于返回参数列表中第一个非空表达式的值。如果所有参数都为 NULL,则返回 NULL。

语法

COALESCE() 函数的语法如下:

COALESCE ( expression1, expression2, ... expression_n )

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