我的数据如下:
id name age gender 1 abc M
'age'值为null。
我希望将列值与分隔符'\ n'连接,如果一个列值为null,则还使用'\ n'来表示它。
我试过了concat_ws
,但它只返回:
1\nabc\nM
我想要的是:
1\nabc\n\nM
在'abc'之后它应该是2'\ n'。
我如何达到我的要求?
答案 0 :(得分:0)
select concat_ws('\n', id, coalesce(name,''), coalesce(age,''), coalesce(gender,''))
from your_table
答案 1 :(得分:0)
不需要使用concat_ws,如果它为null,它将不会连接该值。使用concat + ifnull函数
select concat('\n', ifnull(id,''),ifnull(name,''),ifnull(age,''),ifnull(gender,''))
from your_table
答案 2 :(得分:0)
您应该使用ifnull(column_name,'')将空列替换为空字符并尝试使用concat_ws。
select concat_ws('\n',id,name,ifnull(age,''),gender) from table1;
SQL小提琴链接: http://sqlfiddle.com/#!2/12074/10