spider3658

MySQL字段拼接

部分引用:原文地址

1.concat()函数字段拼接

用法:

concat(str1,str2,...)
栗子:
select concat(s_id,s_name,s_sex) from student where s_id = \'01\' or s_id = \'02\'

tip:

如果有一个拼接的字符串为null,那么返回的结果就是null,所以我们通常配合IFNULL使用

select concat(sc.s_id,ifnull(sc.s_score,\'\'),sc.c_id) from score sc
解释为:如果sc.s_score为null,返回就是sc.c_id。

2. concat_ws函数

concat_ws(separator,str1,str2,...)
栗子:
select
CONCAT_WS(\':\',sc1.c_id,sc2.c_id,sc3.c_id) from student st
LEFT JOIN score sc1 on sc1.s_id = st.s_id and sc1.c_id = \'01\'
LEFT JOIN score sc2 on sc2.s_id = st.s_id and sc2.c_id = \'02\'
LEFT JOIN score sc3 on sc3.s_id = st.s_id and sc3.c_id = \'03\' where st.s_id = \'01\'

解释:separator是分隔符

详解: 分隔符可以是一个字符串,也可以是其它参数。

1)分隔符为NULL,则返回结果为NULL: mysql> select concat_ws(NULL,‘1’,‘2’,‘3’) from test; 结果为:NULL

2)如果参数中存在NULL,则会被忽略: select concat_ws(’:’,‘1’,‘2’,NULL,NULL,NULL,‘3’) from test ; 结果为: 1:2:3

3)可以对NULL进行判断,并用其它值进行替换: select concat_ws(’:’,‘1’,‘2’,ifNULL(NULL,‘0’),‘3’) from bank limit 1; 结果为:1:2:0:3

这里是把为null替换为0

3.group_concat函数

作用: 将多行的字符串按分组整合成一个字符串,必须配合group使用

用法:
GROUP_CONCAT(name separator \';\')
 解释为:
 name是你的字段;
 separator是你的关键字;
 \';\'是你的分隔符号
 最终目的是把一个字段查询出来的所有的值(你需要筛选这些值,因为可能你会连接你不想要的值)进行连接。
栗子:
select s_id,GROUP_CONCAT(c_id SEPARATOR \';\')from score GROUP BY s_id HAVING s_id = \'01\'

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-23
  • 2021-11-23
  • 2021-07-23
  • 2021-08-19
  • 2022-01-07
猜你喜欢
  • 2021-08-08
  • 2021-11-23
  • 2022-03-05
  • 2021-11-23
  • 2021-11-23
  • 2021-11-23
相关资源
相似解决方案