详解MySQL中CONCAT()函数的用法(链接字符串)

MySQL中CONCAT()、CONCAT_WS()和GROUP_CONCAT()函数的区别和使用

一、MySQL中CONCAT函数

1.功能

将多个字符串连接成一个字符串

2.语法

CONCAT(str1,str2,…) 

3.使用方法

返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。

    mysql> SELECT CONCAT('张三','李四','王五');
	result> 张三李四王五
	//——————————————————————————————————————————————
	mysql> SELECT CONCAT('张三','李四',NULL);
	result> NUll

4.如果使用其函数进行模糊查询,其例子如下:

例如:表名(Student)

字段类型注释
fidint主键
name`varchar姓名
sexint`性别1男2女
ageint年龄
c_fidint班级fid

表名(class)

字段类型注释
fidint主键
name`varchar班级名称
mysql>
	SELECT stu.* ,c.`name` cName FROM student AS stu 
	LEFT JOIN class c ON c.fid = stu.c_fid
	WHERE (stu.c_fid LIKE (CONCAT( '%', 1, '%')) OR stu.c_fid LIKE (CONCAT( '%', 2, '%' )));

result>

fidnamesexagec_fidcName
1张三1201一年一班
4赵六2171一年一班
5杨雪1171一年一班
2李四2202一年二班
3王五2182一年二班

二、MySQL中CONCAT_WS函数

1.功能

和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符~(concat_ws就是concat with separator)

2.语法

CONCAT_WS(separator,str1,str2,...) 

3.使用方法

说明:第一个参数指定分隔符。需要注意的是分隔符不能为null,如果为null,则返回结果为null。

//默认分隔符为逗号
mysql> SELECT CONCAT_WS(',','张三','李四','王五');
result> 张三,李四,王五
//和MySQL中CONCAT函数不同的是, CONCAT_WS函数在执行的时候,不会因为NULL值而返回NULL 
mysql> SELECT CONCAT_WS(',','张三',NULL,'王五');
result> 张三,王五

三、MySQL中GROUP_CONCAT函数

1.功能

将group by产生的同一个分组中的值连接起来,返回一个字符串结果。

2.语法

GROUP_CONCAT( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )

3.使用方法

通过使用distinct可以排除重复值;如果希望对结果中的值进行排序,可以使用order by子句;separator是一个字符串值,缺省为一个逗号。

(1)以c_fid分组,把name字段的值打印在一行,逗号分隔(默认)
mysql> select c_fid,group_concat(name) sName from Student group by c_fid;

result>

c_fidsName
1张三,赵六,杨雪
2李四,王五
(2)以c_fid分组,把name字段的值打印在一行,分号分隔
mysql> select c_fid,group_concat(name separator ';')  from Student group by c_fid;

result>

c_fidName
1张三:赵六:杨雪
2李四:王五
(3)以c_fid分组,把去冗余的age字段的值打印在一行,逗号分隔
mysql> select c_fid,group_concat(distinct age) sAge from Student group by c_fid;

result>

c_fidsAge
117,20
218,20
(4)以c_fid分组,把sex 字段的值打印在一行,逗号分隔,以age排倒序
mysql> select c_fid,group_concat(sex order by sex desc) from student group by age;

result>

c_fidsSex
12,1
22
22,1
  • 26
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值