2015-04-07 100 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爲您負責。