2013-10-04 70 views
0

我有不同的列的表像這樣如何在數據不爲空時合併來自不同列的數據?

CREATE TABLE survey(
id int(11) not null auto_increment, 
what_is_your_name VARCHAR(255), 
how_old_are_you varchar(20), 
your_occupation varchar(255) 
... 
... 
... 
) 

我需要從調查表的結果建立的輸出,但我只需要Concat的值如果列不爲空。

所以我想最後一個字符串看起來像這樣如果提供的所有值 名稱是:[what_is_your_name] 年齡:how_old_are_you] 職業:[your_occupation]

如果只提供了2個值,但在[what_is_your_name]爲null,則輸出應該是這樣的 名稱是:[what_is_your_name] 職業:[your_occupation]

不過,我只想Concat的值是值不爲空。 請注意,上表中有更多的問題,但我只發佈了一些表來解釋問題。

如何在MySQL中做到這一點?

感謝

+3

你真的需要在MySQL的?如果是這樣 - 探究'CONCAT()'和'IFNULL()'/'COALESCE()'/'IF()'函數 – zerkms

+0

是的,我需要的是mysql,因爲我必須生成字符串,然後將其插入到不同的表中。我沒有使用腳本語言,因此必須使用SQL來完成。你能否給我舉一個例子,我該怎麼做? – Jaylen

+0

在回答問題後,我在你的回答中成功回答了一系列你需要注意的功能來完成你的任務。你有意錯過他們期待我們爲你做好所有的工作嗎? – zerkms

回答

2

你可以做這樣的事情

SELECT CONCAT_WS(' ', 
     COALESCE(CONCAT('NAME: ', what_is_your_name), ''), 
     COALESCE(CONCAT('AGE: ', how_old_are_you), ''), 
     COALESCE(CONCAT('OCCUPATION: ', your_occupation), '')) survey_details 
    FROM survey 

輸出示例:

 
+---------------------------------------------------+ 
| survey_details         | 
+---------------------------------------------------+ 
| NAME: john AGE: 35 OCCUPATION: Software Developer | 
| NAME: mark OCCUPATION: Unemployed    | 
| NAME: helen AGE: 35        | 
+---------------------------------------------------+ 

下面是SQLFiddle演示

+0

非常感謝謝謝:) – Jaylen

+0

@Mike你很受歡迎。祝你好運 :) – peterm

相關問題