MySQL select,用分隔符拼接

MySQL select, concatenate with separator

我的数据如下:

身份证姓名年龄性别
1 abc 男

'age' 值为空。

我想用分隔符 '\n' 连接列值,如果一列值为空,则也使用 '\n' 来表示它。

我试过concat_ws,但只有return:

1\nabc\nM

我想要的是:

1\nabc\n\nM

也就是在'abc'之后应该是2'\n'。

我怎样才能达到我的要求?

select concat_ws('\n', id, coalesce(name,''), coalesce(age,''), coalesce(gender,''))
from your_table

不需要使用concat_ws,如果是null.use concat +ifnull function

则不会concat那个值
select concat('\n', ifnull(id,''),ifnull(name,''),ifnull(age,''),ifnull(gender,'')) 
from your_table

您可能应该使用 ifnull(column_name,'') 将空列替换为空字符并尝试 concat_ws.

select concat_ws('\n',id,name,ifnull(age,''),gender) from table1; 

SQLFiddlelink: http://sqlfiddle.com/#!2/12074/10