mysql函数之 concat()多个字段拼接

mysql函数之多个字段拼接

Mysql的查询结果行字段拼接,可以用下面两个函数实现:

1. concat()

  • 作用: 将多个结果作为字符串拼接在一起

  • 语法:
    CONCAT(str1,str2...)

  • 示例:

SELECT CONCAT(o.user_code,o.user_name) FROM sys_user o WHERE id = 10
  • 注意:
    如果说要拼接的字符串中有一个是null,那么返回结果就是null。
    所以,我们通常配合使用IFNULL
SELECT CONCAT(IFNULL(o.is_admin,''),o.user_name) FROM sys_user o WHERE id = 10

这样如果is_admin为null,那么返回的就是user_name

  • 为了更直观的体会这个函数的用法:
    (1)select concat(‘1’,‘2’,‘3’) from test ;
    结果为:123
    (2)如果连接串中存在NULL,则返回结果为NULL:
    select concat(‘1’,‘2’,NULL,‘3’) from test ;
    结果为:NULL

2. concat_ws函数

  • 作用:将多个结果拼接在一起,使用指定的分隔符

  • 语法:
    CONCAT_WS(separator,str1,str2,...)

  • 示例:

SELECT CONCAT_WS(';',o.user_code,o.user_name) FROM sys_user o WHERE id = 10
  • 注意:
    如果说要拼接的字符串中有null,返回结果也不会是null。

  • 详解:
    concat(separator,str1,str2,…) 代表 concat with separator ,是concat()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。

select concat_ws(’:’,‘1’,‘2’,‘3’) from test ;
结果为:1:2:3

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

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

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

3.group_concat

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

  • 语法:
    group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])

  • 示例:

(1)以id分组,把去冗余的name字段的值打印在一行

select id,group_concat(name separator ';') from aa group by id;  

注意:如果我们不指定分隔符,该语法默认是使用逗号分隔的。

(2)以id分组,把name字段的值打印在一行,逗号分隔,以name排倒序

select id,group_concat(name order by name desc) from aa group by id;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值