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
我的数据如下:
身份证姓名年龄性别 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