concat、concat_ws()、group_concat() 你的名字 2023-09-29 09:24 7阅读 0赞 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 函数][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 [mysql group_concat]: https://blog.csdn.net/weixin_40482816/article/details/117362800
还没有评论,来说两句吧...