SQL Server COALESCE17 Mar 2025 | 4 分钟阅读 SQL Server 中的 COALESCE() 函数按 顺序计算参数,并返回第一个非 NULL 值,从指定的多个表达式中进行选择。 如果它计算所有列表值都为 null 或未找到任何非 null 值,则返回 NULL。 语法以下是说明 COALESCE() 函数的语法 参数解释此函数仅接受一个参数,即包含各种值的列表。 value1, value2,…..,valueN: 它指定列表的值,以在输出中返回 非 NULL 或 NULL 值。 它可以是任何类型,但对于所有表达式都应相同。 我们可以通过以下说明更清楚地理解它: 案例1: COALESCE(NULL, NULL); 案例2: COALESCE(0, NULL); 在这里,我们可以看到该函数可以接受多个参数,并返回第一个非 null 值。 当列表中的所有值都为 null 时,此函数将返回 NULL。 因此,案例1和案例2始终返回 NULL,因为它们找不到任何非 null 值。 SQL Server Coalesce 示例让我们通过多个示例来理解 COALESCE() 函数。 请注意,我们可以直接将 COALESCE() 函数与 SELECT 语句一起使用。 1. COALESCE 函数,使用字符数据类型的表达式 此示例使用 COALESCE 函数,带有多个值,并返回字符串 'Hello',因为它是第一个非 NULL 表达式 执行后,我们将看到以下输出 ![]() 2. COALESCE 函数,使用数值表达式 此示例使用 COALESCE 函数,带有多个值,以计算参数列表并返回 第一个数字,它不是 NULL 执行后,我们将看到以下输出 ![]() 3. COALESCE 函数总是首先计算一个整数 此示例使用 COALESCE 函数,其值是一个整数,后跟一个字符表达式,并返回一个整数作为输出 执行后,我们将看到以下输出 ![]() 如果更改整数和字符串的顺序(先字符串,然后整数),SQL Server 将 抛出错误。 见下输出 ![]() 4. COALESCE 函数与表一起使用 在此示例中,我们将看到 coalesce() 函数如何与表一起工作。 首先,我们将使用以下语句创建一个名为 'emp_contacts' 的表 接下来,我们将数据添加到此表中,如下所示 我们可以使用下面的 SELECT 语句验证该表 ![]() 现在,我们将使用 Coalesce 函数选择列 homenumber、worknumber 和 personalnumber。 如果这些列具有 NULL 值,它将返回值 'NA'(不适用)。 见下代码 执行后,我们将看到以下输出 ![]() COALESCE 和 CASE 表达式COALESCE 函数用作 CASE 表达式的语法快捷方式。 查询优化器将 COALESCE(expressions) 写入 CASE 表达式,如下所示 让我们以上一个 Coalesce 函数的示例为例,该示例从 emp_contact 表中选择列 homenumber、worknumber 和 personalnumber。 如果这些列具有 NULL 值,它将返回值 'NA'(不适用)。 我们可以将此 coalesce 函数写成 CASE 表达式,如下所示 执行后,我们将获得与使用 coalesce 函数相同的输出 ![]() COALESCE vs. ISNULL我们经常会混淆 ISNULL 函数和 COALESCE 表达式,因为它们都有类似的目的,但行为可能有所不同。 下面讨论了一些关键区别
无法创建 #DempTable1,因为 PRIMARY KEY 不允许 NULL 值,并且 column2 的 COALESCE 表达式的可空性可以返回 NULL。 可以创建 #DempTable2,因为 ISNULL 函数的可空性计算结果为 NOT NULL。
|
我们请求您订阅我们的新闻通讯以获取最新更新。