2015-04-07 50 views
0

我需要将表中的7列连接到一个名为scan_data的列中。多列的TSQL连接

我知道SQL中有一个连接选项,但我不知道如何实现它。

+0

如果这些列非常相似以至于需要将它们连接起来,为什么要使用多列?使用具有两列的另一个表,第一个表的外键和另一个“DataType”columnto区分类型。通过这种方式,您的所有查询变得越来越简单和高效。该过程称为[规范化](http://en.wikipedia.org/wiki/Database_normalization)。 –

+0

列中的数据来自单个字符串,然后解析到不同的字段中。现在我需要将它们全部回到同一个表中的单个字符串中。 –

+0

标题和问题要求不同的事情。你想连接*列*或*行*? – Kai

回答

2

对于SQL Server 2012或更高版本,只需使用Concat功能:

select scan_data = concat(column1, column2, column3, column4, column5, column6, column7) 
from MyTable 

对于SQL Server 2012之前的版本中,你需要使用:

select scan_data = column1 + column2 + column3 + column4 + column5 + column6 + column7 
from MyTable 

如果您的列包含null值,则需要对它们进行空值保护(即isnull(column1, '')),否则整个串联的字符串将返回null。 只有2012年之前的版本需要零守护 - concat为您负责。