如何在串联字符串中捕获句柄空值?

时间:2017-12-20 11:04:15

标签: sql sql-server

我在视图中有以下内容

c2.title + ' ' + c2.initials + ' ' + c2.surname AS referredTo

现在看来,如果其中一个值为null,那么referTo就是null。但是对于某些记录,标题,首字母或姓氏可能为空。处理此问题的最佳方法是,一个或多个值为null,它将仅返回具有非null值的字符串。因此,例如,如果title为null,它将只返回" initals surname",如果initials为null,它将返回" title surname",如果两者都为null,它将返回& #34;姓氏"等,以涵盖任何这些值为空。这可能是一个非常简单的答案,但我对SQL不熟悉,不得不像我一样学习。

感谢。

4 个答案:

答案 0 :(得分:4)

根据评论中的建议,将空格放在ISNULL

SELECT ISNULL(Title + ' ', '') + ISNULL(Initials + ' ','') + ISNULL(Surname,'')
FROM YourTable;

这意味着如果Initials的值为NULL,则不会在前面或者(可能)Title和Surname之间的两个空格处结束WhiteSpace。

答案 1 :(得分:3)

也许您可以使用ISNULL,请查看以下声明

RTRIM(
    LTRIM(
      ISNULL(c2.title,    '') + ' ' +
      ISNULL(c2.initials, '') + ' ' +
      ISNULL(c2.surname,  '')
    )
) AS referredTo

答案 2 :(得分:0)

SET @FinalAnswer= ISNULL(@Col1, '') + ' ' +ISNULL(@Col2, '')

尝试上述方法。

答案 3 :(得分:-1)

使用Concat()

Select LTRIM(RTRIM(Concat(c2.title,' ',c2.initials,' ',c2.surname))) AS referredTo
 FROM yourTable

DEMO