concat、concat_ws()、group_concat()

concat() 与 concat_ws() 函数用于连接两个或多个串,但它们之间的基本区别是:

1、CONCAT_WS()函数可以执行级联与串之间的分离器沿,而在CONCAT()方法没有隔板的概念。2、它们之间的另一个重要区别是,CONCAT()如果任何参数为NULL,则函数返回NULL;而CONCAT_WS()函数 分隔符为NULL时,函数将返回才NULL。

1、concat()函数

功能:将多个字符串连接成一个字符串。

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

MySQL的concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL,可以连接一个或者多个字符串。

select concat('10'); -- 10
 
select concat('11','22','33'); -- 112233

select concat('11','22',null); -- null

Oracle的concat函数连接的时候,只要有一个字符串不是NULL,就不会返回NULL。只能连接两个字符串,不能多也不能少。

select concat('11',NULL) from dual; -- 11

2、concat_ws() 函数

表示concat with separator,即有分隔符的字符串连接。

功能:和concat()一样,将多个字符串连接成一个字符串,但可以指定分隔符。

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

注意:

        和concat不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL;但会因为 分隔符为NULL,函数返回NULL。

select concat_ws(',','11','22','33'); -- 11,22,33
 
select concat_ws('|','11','22','33'); -- 11|22|33
 
select concat_ws('*','11','22',NULL); -- 11*22

select concat_ws(null,'11','22',NULL); -- null

 3、group_concat()函数

详细说明:mysql group_concat 函数

group by 查询语句中,select 指定的查询字段,只能是 group by 语句的后面的字段,或包含在聚合函数中。

功能 :将group by 产生的同一个分组中的值连接起来,返回一个字符串结果(但返回的结果有长度限制)。

语法:group concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc] [separator 分隔符] )

说明:

        通过使用distinct 可以排除重复值;

        如果希望结果中的只进行排序,可以使用 order by 子句;

        separator 是一个字符串值,缺省值为 一个逗号。

示例:

SELECT
	u.org_id 机构号,
	u.user_id 用户号,
	GROUP_CONCAT( r.role_ID ) 角色编号1, -- 默认使用逗号分隔
    GROUP_CONCAT( r.role_ID separator '#') 角色编号2,-- 指定分隔符 #
    GROUP_CONCAT( r.role_ID order by r.role_ID separator '#' ) 角色编号3, -- 根据角色编号排序,不去重
	GROUP_CONCAT( distinct r.role_ID order by r.role_ID separator '#' ) 角色编号4, -- 根据角色编号排序,并去重
    GROUP_CONCAT( r.role_name ) 角色名称1, 
	GROUP_CONCAT( distinct r.role_name order by r.role_ID) 角色名称2  -- 根据角色编号排序,拼接角色名称,并去重
FROM
	user AS u
	LEFT JOIN user_role_rel AS urr on u.user_id = urr.user_id 
	LEFT JOIN role AS r on urr.role_id = r.role_id
GROUP BY
	u.org_id,
	u.user_id

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
group_concatconcat_ws是MySQL中的两个字符串拼接函数。 group_concat函数用于将同一分组中的多个值连接在一起,可以使用可选的distinct关键字去重,并可以指定排序字段和分隔符。例如,使用group_concat函数可以将一组数据拼接成一个字符串。 而concat_ws函数用于连接多个字符串,并可以指定一个分隔符。与concat函数不同的是,concat_ws函数会自动忽略其中有NULL值的参数。 总结来说,group_concat函数用于连接同一分组中的多个值,并可以去重、排序和添加分隔符,而concat_ws函数用于连接多个字符串并添加分隔符,同时忽略其中有NULL值的参数。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MYSQLconcatconcat_wsgroup_concat函数用法和区别](https://blog.csdn.net/henri_/article/details/111768059)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [concat,concat_ws,group_concat函数](https://blog.csdn.net/qq_34206560/article/details/88358982)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值