美文网首页
MySQL-concat,concat_ws,group_con

MySQL-concat,concat_ws,group_con

作者: 花讽院_和狆 | 来源:发表于2020-03-16 11:39 被阅读0次

    concat()可以把字符串合并到一起,在对于需要判断两个不同条件的时候,比较有用,把两个条件进行合并,很简便,函数的参数和格式为:

    concat(str1, str2,...)
    其中str1,str2分别是需要连接的文本。
    当其中一个参数为NULL时,整体输出为NULL。

    例子:

    select concat('1','NULL') from dual;
    

    输出如下:


    当其中有一个为NULL时:

    select concat('1',NULL, '1') from dual;
    

    注意,其中的NULL和之前的'NULL'不一样!
    可以得到输出结果为:

    concat_ws()函数

    这个函数功能和concat是类似的,但是多了一个添加分隔符的功能,格式如下:

    concat_ws(separator, str1, str2, ...)
    其中separator是分隔符,从str1和str2之间开始添加。

    例如:

    SELECT
        concat_ws ( '/', 'NULL', '1' ) 
    FROM
        DUAL;
    

    可以得到输出为:


    这个函数中,当字符串str1,str2等为NULL时,只是单纯的省略这个参数不加分隔符,但是字符串不会为NULL。

    SELECT
        concat_ws ( '/', 'NULL', '1', NULL, '2' ) 
    FROM
        DUAL;
    

    输出为:



    可以看到,第三个字符串的NULL被省略了。

    当第一个参数(分隔符)为NULL时,整体为NULL。

    SELECT
        concat_ws ( NULL, 'NULL', '1', NULL, '2' ) 
    FROM
        DUAL;
    

    输出为:


    group_concat()

    该函数需要配合group by关键字使用,作用是把分组出来的字段按组进行合并。格式如下:

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

    例如:
    有表如下:


    employee表
    SELECT
        GROUP_CONCAT( MONTH order by salary desc separator '*') 
    FROM
        employee 
    GROUP BY
        Id
    

    输出如下:


    看起来比较难以理解,解释一下:

    • 按照id分组,分完之后,month的个数是不同的。
    • group_concat中第一个就是要合并的字段,这里是month,那就是把month合并到一起。
    • 第二个order by代表的是排列的顺序,按照salary降序排列,很明显输出结果是按照每个month的salary排序的。
    • 第三个是separator ,也就是分隔符。

    在分组函数中进行连接,某些时候会比较方便。

    相关文章

      网友评论

          本文标题:MySQL-concat,concat_ws,group_con

          本文链接:https://www.haomeiwen.com/subject/lwawehtx.html