当前位置: 代码迷 >> 综合 >> mysql中concat(),concat_ws()及group_concat()的用法及区别
  详细解决方案

mysql中concat(),concat_ws()及group_concat()的用法及区别

热度:16   发布时间:2023-12-18 08:54:58.0

1:concat()函数

用法: concat(str1,str2,...)

功能:可以将多个字符串拼接在一起。

测试表数据:

 实战演示:(1)实战功能将是三个字段合并在一起

 

(2)

2.concat_ws()函数 

用法: concat_ws(separator,str1,str2,...)

功能:可以将多个字符串拼接在一起并中间用分隔符隔开。

功能演示:三个字段中间用'_'拼接在一起。

 

3.group_concat()

功能一:(1)根据主键的唯一性分组拼接,显示列中可以包含非分组列(t.spzt,t.spfm)

如果按照相同列分组合并,则前面显示列中一定不能出现非分组列字段  如下:

错误写法: 

提示错误信息:

选择列表不在GROUP BY子句中,并且包含未聚合的列“dsnl_new.t.id”,该列在功能上不依赖GROUP BY子句中的列

 正确写法:

 

功能二:将多行数据合并成一行

总结:

1.concat()和concat_ws()的区别是:concat()可以将任意字符串拼接在一起,字符串之间也可以用分隔符拼接;而concat_ws()函数提供了一种方便的方法是将字符串之间用间隔符分开,但是concat_ws()不能将指定字符串之间进行间隔拼接,但是实际工作中常用concat()函数就可以解决大部分问题了。

2.group_concat()函数 是将字符串分组拼接,如果在使用group by 注意如果分组列含有唯一列(比如主键)则前面显示列中可以包含所有列

 只要分组中含所有唯一列这样写也可以

 如果分组列中按照非唯一列分组,则前面显示列中不能出现非分组列字段

 如果不用group by可以将多行数据合并成一行

  相关解决方案