在sql-server中将3个或更多列组合成一个

时间:2016-02-23 19:25:59

标签: sql sql-server

我尝试过使用组合列 从表中选择(column1 +',' + column2 +',' + column3)作为column4。但我并没有真正得到三列的结果。它有两个专栏。当我尝试再添加一个不从表中检索任何信息时。请帮助我。

2 个答案:

答案 0 :(得分:2)

如果其中一列的值为NULL,则结果为null,因此您可以使用coalesce或isnull。 ISNULL函数和COALESCE表达式具有相似的目的,但行为可能不同。

  • 因为ISNULL是一个函数,所以它只被评估一次。如上所述,可以多次评估COALESCE表达式的输入值。

  • 结果表达式的数据类型确定是不同的。 ISNULL使用第一个参数的数据类型,COALESCE遵循CASE表达式规则并返回具有最高优先级的值的数据类型。

  • 结果表达式的NULLability对于ISNULL和COALESCE是不同的。 ISNULL返回值始终被视为NOT NULLable(假设返回值是非可空的),而具有非null参数的COALESCE被视为NULL。因此,表达式ISNULL(NULL,1)和COALESCE(NULL,1)虽然等效,但具有不同的可为空性值。如果您在计算列中使用这些表达式,这会有所不同。

所以结果将是:

SELECT isnull(column1, 'abs') + ',' + isnull(column2, 'abc') + ',' + isnull(column3, 'abc') as OneColumnResult from TABLE

希望它有所帮助。

答案 1 :(得分:0)

您错过了此代码段中的最后一个“+”。应该是

选择(column1 +','+ column2 +','+ column3)为column4

感到惊讶的是你没有收到错误