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)
...
...
...
)

我需要从调查表的结果中构建一个输出,但如果该列不为空,我只需要连接这些值。

因此,如果提供了所有值,我希望最终字符串看起来像这样 NAME IS: [what_is_your_name] AGE: [how_old_are_you] OCCUPATION: [your_occupation]

如果只提供了 2 个值但 [what_is_your_name] 为空,则输出应如下所示 NAME IS: [what_is_your_name] OCCUPATION: [your_occupation]

但是,我只想连接值是值不为空。请注意,上面的表格还有很多问题,但我只发布了一些表格来解释问题。

我怎样才能在 MySQL 中做到这一点?

谢谢

4

1 回答 1

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

样本输出:

+-------------------------------------------------- --+
| 调查详情 |
+-------------------------------------------------- --+
| 姓名:john 年龄:35 职业:软件开发人员 |
| 姓名:mark 职业:失业 |
| 姓名:海伦年龄:35 |
+-------------------------------------------------- --+

这是SQLFiddle演示

于 2013-10-04T05:31:50.673 回答