我有一个包含不同列的表格,如下所示
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)
...
...
...
)
我需要根据调查表的结果构建输出,但仅当列不为空时才需要连接值。
所以如果提供了所有值,我希望最终的字符串看起来像这样 姓名是:[你的名字是什么] 年龄:[你多大了] 职业:[您的职业]
如果只提供了 2 个值,但 [what_is_your_name] 为 null,则输出应如下所示 姓名是:[你的名字是什么] 职业:[您的职业]
但是,我只想连接该值,因为该值不为空。 请注意,上表还有很多问题,但我只发布了一些表来解释问题。
如何在 MySQL 中做到这一点?
谢谢
最佳答案
你可以做这样的事情
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 演示
关于mysql - 当数据不为空时如何合并不同列的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19173827/