在 SQL Server 字符串拼接中如何处理 NULL 值

3
我有以下的SQL查询。
select s.comments + s.further_comments from dbo.samples s where id = 1234

然而,如果s.comments或s.further_comments是NULL,则整个字符串返回NULL。
如何将NULL值转换为空字符串,或者至少只返回此字符串中的非NULL值?
1个回答

6
您可以使用 ISNULLCOALESCE 来完成这个任务。这两个函数都与替换空值有关。
SELECT ISNULL(s.comments, '') + ISNULL(s.further_comments, '')
SELECT COALESCE(s.comments, '') + COALESCE(s.further_comments, '')

ISNULL

Replaces NULL with the specified replacement value.

COALESCE

Returns the first nonnull expression among its arguments.

请注意,这两种方法之间存在一些差异,但就所有意图而言,它们很可能不适用于您的情况。
  1. ISNULL(NULL, NULL) -- 返回 int 类型
  2. COALESCE(NULL, NULL) -- 会报错
  3. COALESCE(CAST(NULL as int), NULL) -- 可行且返回 int 类型
  4. ISNULL 只接受两个参数,而 COALESCE 接受可变数量的参数
  5. COALESCE 基于 ANSI SQL 标准,而 ISNULL 是专有的 TSQL 函数

如果您需要连接可空列,则此功能也非常有用。 - BuZz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接