我在下面有一个简单的代码。
Select columnA, columnB, columnC
From table.
这是我的结果。
ColumnA ColumnB ColumnC Apple G null Juice S T9
现在,我使用连接如下
Select
ColumnA + '_'+ ColumnB + '_' + ISNULL(ColumnC, '') as Name
From table
我的输出如下
Name Apple_G_ Juice_S_T9
如何修改上面的连接,以便它显示为Apple_G而不是Apple_G_ 基本上,我的结果中有一个额外的_。
答案 0 :(得分:4)
在应用IsNull
函数之前,只需将下划线与可空列连接即可。
Select
ColumnA + '_'+ ColumnB + ISNULL('_' + ColumnC, '') as Name
From table
这需要将CONCAT_NULL_YIELDS_NULL
选项设置为ON。 - 默认情况下是哪个,Microsoft强烈建议使用哪个。
答案 1 :(得分:0)
使用IIF
(SQL Server 2014+)或CASE
:
IIF
Select
ColumnA + '_' +
ColumnB +
IIF(ColumnC IS NOT NULL, '_' + ColumnC, '')
From table
CASE
Select
ColumnA + '_' +
ColumnB +
CASE
WHEN ColumnC IS NOT NULL THEN '_' + ColumnC
ELSE ''
END
From table
答案 2 :(得分:0)
您可以使用COALESCE返回第一个非空表达式
Select COALESCE(ColumnA + '_'+ ColumnB + '_' + ColumnC, ColumnA + '_'+ ColumnB) as Name
From table
或者如果您想在更深层次上自定义
Select COALESCE(ColumnA + '_'+ ColumnB + '_' + ColumnC,
ColumnA + '_'+ ColumnB,
ColumnA ) as Name
From table
整个解决方案依赖于SQL Server功能,如果任何连接字符串为null,则完整字符串将变为null。