美文网首页
mysql函数 字段拼接concat()、concat_ws()

mysql函数 字段拼接concat()、concat_ws()

作者: 爱折腾的傻小子 | 来源:发表于2020-11-27 10:09 被阅读0次
    concat()函数
    • 将多个字符串连接成一个字符串
    • concat(str1, str2,...)
      • 返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null
    • 示例
    -- 拼接字段 area、fr、best_history_data
    select concat(area,fr,best_history_data) from test_concat order by id limit 5;
    -- 想在字段间添加分隔符,需要在每两个字段间都添加一个分隔符
    select concat(area,',',fr,',',best_history_data) as test_result from test_concat order by id limit 5;
    

    concat_ws()函数
    • 和concat()一样,将多个字符串连接成一个字符串
    • 但是可以一次性指定分隔符
    • concat_ws(separator, str1, str2, ...)
      • 第一个参数指定分隔符,分隔符不能为null,如果为null,则返回结果为null
    • 示例
    -- 已英文逗号分隔字段area、fr、best_history_data
    select concat_ws(',',area,fr,best_history_data) from test_concat order by id limit 5;
    -- 和MySQL中concat函数不同的是, concat_ws函数在执行的时候,不会因为NULL值而返回NULL 
    select concat_ws(',','11','22',NULL);
    /*
    +-------------------------------+
    | concat_ws(',','11','22',NULL) |
    +-------------------------------+
    | 11,22 |
    +-------------------------------+
    1 row in set (0.00 sec)
    */
    

    group_concat()函数
    • 将group by产生的同一个分组中的值连接起来,返回一个字符串结果
    • group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator '分隔符'] )
      • 通过使用distinct可以排除重复值
      • 如果希望对结果中的值进行排序,可以使用order by子句
      • separator是一个字符串值,缺省为一个逗号
    • 示例
    /*
    +-------------------------------+
    | id | age | name |
    +-------------------------------+
    | 1 | 30 | 啊啊啊 |
    | 2 | 50 | 是是是 |
    | 3 | 55 | 张学友 |
    | 4 | 55 | 郭富城 |
    +-------------------------------+
    1 row in set (0.00 sec)
    */
    -- 根据area分组,拼接每个区域各个指标的指标值
    select GROUP_CONCAT(id,name) from t_user GROUP BY age;
    /*
    +-------------------------------+
    | GROUP_CONCAT(id,name) |
    +-------------------------------+
    | 1啊啊啊 |
    | 2是是是 |
    | 3张学友,4郭富城 |
    +-------------------------------+
    1 row in set (0.00 sec)
    */
    
    select GROUP_CONCAT(id,name separator '-') from t_user GROUP BY age;
    /*
    +-------------------------------+
    | GROUP_CONCAT(id,name) |
    +-------------------------------+
    | 1啊啊啊 |
    | 2是是是 |
    | 3张学友-4郭富城 |
    +-------------------------------+
    1 row in set (0.00 sec)
    */
    
    select GROUP_CONCAT(concat_ws('-|-',id,name) separator '&') from t_user GROUP BY age;
    /*
    +-------------------------------+
    | GROUP_CONCAT(concat_ws('-|-',id,name) separator '&') |
    +-------------------------------+
    | 1-|-啊啊啊 |
    | 2-|-是是是 |
    | 3-|-张学友&4-|-郭富城 |
    +-------------------------------+
    1 row in set (0.00 sec)
    */
    
    select GROUP_CONCAT(concat_ws('-|-',id,`name`) order by `id` asc separator '&') from t_user GROUP BY age;
    /*
    +-------------------------------+
    | GROUP_CONCAT(concat_ws('-|-',id,`name`) order by `id` asc separator '&') |
    +-------------------------------+
    | 1-|-啊啊啊 |
    | 2-|-是是是 |
    | 3-|-张学友&4-|-郭富城 |
    +-------------------------------+
    1 row in set (0.00 sec)
    */
    select GROUP_CONCAT(concat_ws('-|-',id,`name`) order by `id` desc separator '&') from t_user GROUP BY age;
    /*
    +-------------------------------+
    | GROUP_CONCAT(concat_ws('-|-',id,`name`) order by `id` asc separator '&') |
    +-------------------------------+
    | 1-|-啊啊啊 |
    | 2-|-是是是 |
    | 4-|-郭富城&3-|-张学友 |
    +-------------------------------+
    1 row in set (0.00 sec)
    */
    

    参考来源:yuandian43

    相关文章

      网友评论

          本文标题:mysql函数 字段拼接concat()、concat_ws()

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