2012-09-25 40 views
0

我需要將值集中在一起並將其複製到不同的列。將列連接在一起,列可以爲空

COLUMN 1 | COLUMN 2 | COLUMN 3 | COLUMN 4 
Hallo  out   there  Hallo out there 
My   NULL  name is My name is 
I'm  a   rabbit  I'm a rabbit 

如何合併第1,2,3列並將其複製到以空格分隔的第4列。

列可以爲空。

回答

3
UPDATE dbo.table 
    SET column4 = COALESCE(column1, '') 
     + COALESCE(' ' + column2, '') 
     + COALESCE(' ' + column3, ''); 
2

只要使用+號

select ISNULL([COLUMN 1],'')+' ' + 
     isnull([COLUMN 2],'')+' ' + 
     isnull([COLUMN 3],'') 
    from your_table 
1

使用ISNULL

UPDATE table 
SET Column4 = 
ISNULL(Column1+' ','') + 
ISNULL(Column2+' ','') + 
ISNULL(Column3,'') 

或者你可以考慮使用計算列。

0
update yourtable SET COlumn4= ltrim(rtrim(isnull([COLUMN 1],'') +' '+isnull([COLUMN 2],'') +' '+ isnull([COLUMN 3],''))) 
+0

現在它會添加額外的空間(例如,如果column1和column2都爲null)。 –

+0

請現在檢查。我已刪除多餘的空格 – AnandPhadke

3

SQL Server 2012的

UPDATE table 
SET Column4 = CONCAT(Column1 + ' ', Column2 + ' ', Column3) 
+2

100K看起來很漂亮。 :-) –

+0

@AaronBertrand - 是不錯的回合數。當它改變時會感到羞恥! –

0
select isnull(convert(varchar(255),[COLUMN1]),'')+' '+isnull(convert(varchar(255),[COLUMN2]),'')+' '+isnull(convert(varchar(255),[COLUMN3]),'') 
from table 

UPDATE table 
SET COLUMN4 = isnull(convert(varchar(255),[COLUMN1]),'')+' '+isnull(convert(varchar(255),[COLUMN2]),'')+' '+isnull(convert(varchar(255),[COLUMN3]),'') 

上面的代碼可以不依賴於數據類型的工作,所以你可以在轉換之前爲varchar。