2014-03-30 200 views
49

我試圖找到一種方法將兩列合併爲一列,但不斷在列中獲取值「0」而不是單詞的組合。MySQL將兩列合併爲一列

這些是我已經試過以及其他:

SELECT column1 + column2 AS column3 
FROM table; 

SELECT column1 || column2 AS column3 
FROM table; 

SELECT column1 + ' ' + column2 AS column3 
FROM table; 

可能有人請讓我知道我做錯了嗎?

+1

您使用的數據庫是?這兩列的類型是什麼? –

+0

mySQL web客戶端 – aab

+0

[將兩個數據庫列連接到一個結果集列]可能的重複(http://stackoverflow.com/questions/6427764/concatenate-two-database-columns-into-one-resultset-column) –

回答

78

我的猜測是,您正在使用MySQL,其中+運算符會添加,並將值無聲轉換爲數字。如果值不以數字開頭,則轉換後的值爲0

那麼試試這個:

select concat(column1, column2) 

兩種方式來添加一個空格:

select concat(column1, ' ', column2) 
select concat_ws(' ', column1, column2) 
+0

我正在使用'sql server 2005',它給了我錯誤,因爲'附近的語法錯誤')'。' – BNN

+2

@coder。 。 。這個問題被標記爲「mysql」。如果您有關於SQL Server的問題,請將其作爲問題提出,而不是發表評論。 –

+0

同樣的方法也適用於Hive。 – panther

4

這是一個將工作對我來說,當我需要的列之間的空間是唯一的解決辦法合併。

select concat(concat(column1,' '), column2) 
9

試試這個,它爲我工作

select (column1 || ' '|| column2) from table; 
+0

這看起來像Oracle。 – coburne

+0

這也適用於組合多個(多於2個)列。 Thx – Kayathiri

1

我已經使用這個方法及其最佳永遠。在這段代碼也無效處理

SELECT Title, 
FirstName, 
lastName, 
ISNULL(Title,'') + ' ' + ISNULL(FirstName,'') + ' ' + ISNULL(LastName,'') as FullName 
FROM Customer 

嘗試......

3

對於MySQL的球迷在那裏,我喜歡IFNULL()功能。這裏的其他答案在一些實現中提出了與ISNULL()函數類似的功能。在我的情況,我的描述是NOT NULL的一列,這可能是NULL序列號的列這是我如何將它們結合在一起成一列:

SELECT CONCAT(description,IFNULL(' SN: ', serial_number),'')) FROM my_table; 

我的研究結果表明,級連的結果字符串NULL的結果爲NULL。在這些情況下,我一直在獲得替代價值。

10

這是爲我工作

SELECT CONCAT(column1, ' ' ,column2) AS newColumn; 
0
convert(varchar, column_name1) + (varchar, column_name) 
0
SELECT Collumn1 + ' - ' + Collumn2 AS 'FullName' FROM TableName        
+0

簡單的組合方式 – Ravin

3

如果您正在使用Oracle然後:

SELECT column1 || column2 AS column3 
FROM table; 

OR

如果您正在使用的MySQL然後:

SELECT Concat(column1 ,column2) AS column3 
FROM table; 
-2

- 用於實例:組數字的列.... - 當用數字合併列,你必須投從#DATA類型的列字符串 --otherwise SQL會添加這些在相同的列/結果中一起編號。

select cast(shipperid as varchar)+'| '+ cast(empid as varchar) from sales.Orders