2015-12-11 89 views
0

我有一個列表答:MYSQL CONCAT加入沒有顯示值

Item | Company 
1 | aa 
2 | bb 

B組:

Item | Info 
2 | blablabla 

我有以下查詢:

SELECT a.item, concat(A.company, ' - ', B.info) 
From A LEFT JOIN B on A.item = B.item 

這是什麼我得到:

1 None 
2 bb - blalal 

我試圖讓:

1 aa - 
2 bb - blalal 
+0

請上傳(通過使用[編輯]添加到您的問題),你希望得到的結果。 –

回答

1

concat()回報NULL如果任何一個參數是NULL一個簡單的解決方案是coalesce()

SELECT a.item, concat(A.company, ' - ', coalesce(B.info, '')) 
From A LEFT JOIN 
    B 
    on A.item = B.item; 

你似乎想的分隔符。如果你沒有,另一種是:

SELECT a.item, concat_ws(' - ', A.company, B.info) 
+0

這起作用。非常感謝。所以我們有一個concat_ws在所有參數之間添加分隔符並跳過NULL值,但是我們沒有常規版本的concat,它跳過NULL? – viviwill

+0

@viviwill。 。 。是的,你似乎理解這兩個功能。我認爲'concat()'的NULL行爲是由ANSI定義的。另外,使用'concace_()'使用'coalesce()'並不容易。 –

0

使用IFNULL

SELECT A.Item, CONCAT(A.Company, ' - ', IFNULL(B.Info,'')) 
FROM A 
LEFT JOIN B ON A.Item=B.Item; 
+0

這個也可以,謝謝 – viviwill

+0

coalesce()是sql標準,應該用來代替ifnull() –