• mysql中的concat的几个函数使用


      今天看人家用group_concat,才感觉这里懂得有些少,学习一番。

     一:concat基础函数

    1.函数用法

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

      将多个字符串连接成一个字符串。

    2.示例

    select concat(contract_id, ' - ', bd_code, ' - ', bd_name) as tmp from t_plm_contract_monitor;
    

      效果:

      

      可以看到,这里是将每行的数据,所有的字段,进行相连。

    3.注意点

      如果一个字段是null,则返回这行都是一个null【网上说法】。

      进行试验:

      

      结果发现:

      这一行不是空的null,试验出真知,没有的地方是不显示。

      不知道是不是版本的问题。这个mysql版本是5.6.

    二:concat_ws

    1.说明

      上面的写法感觉有点累啊,因为每个链接符都要写,是否有简单的方式的?

      这个函数的使用方式如下:

      concat_ws(separator, str1, str2, ...)

      只要在第一个位置上,指定分隔符就不会出现问题。

    2.试验

    select concat_ws(' - ',contract_id,bd_code,bd_name) as tmp from t_plm_contract_monitor;
    

      效果:

      

    3.说明

      感觉使用的使用是挺好的。

    4.少数据会怎样呢?

      试验效果如下,仍然是不显示。

      

    三:group_concat

    1.说明

      这个是今天的重头戏。

    2.举例

      通过合同id进行分组,找到最小的id。

    select contract_id, min(id) from t_plm_contract_monitor group by contract_id;
    

      结果:

      

    3.更加多的需求

      上面的问题比较简单,但是我想知道一个contract_id对应的id有哪些呢,又不会出现多行contract_id一样的数据。

      这个时候就可以使用这个函数了。

    4.举例

    select contract_id, GROUP_CONCAT(id) from t_plm_contract_monitor group by contract_id;
    

      结果:

      

    5.更加优化的用法

      为啥这么说呢,因为上面的用法中,没有说明如何使用的分隔符。

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

      

    6.试验一下

      让id进行倒叙,使用‘-’进行分割。

    select contract_id, GROUP_CONCAT(distinct id order by id desc separator '-') from t_plm_contract_monitor group by contract_id;
    

      结果:

      

    7.还一种用法

    select group_concat(mm.contract_id) from (
    select contract_id from t_plm_contract_bill_term_monitor where is_deleted = 0
    GROUP by bill_term_end_date,contract_id HAVING count(*) > 1
    ) mm
    

      结果:

      

  • 相关阅读:
    SSH 多台VM之间无密码登录
    JavaScript Calling WebService by SOAP
    Excel大数据排查重复行内容方法,三步搞定!
    linux添加软件的service start/stop快捷服务(简单版)
    Linux服务器其中一个磁盘满了怎么办?在不做磁盘扩容的情况下,一个软连接就搞定。
    oracle数据库中将clob字段内容利用java提取出至文本文档中
    最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
    mysql数据库误删除操作说明
    mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!
    新建ftp账号,并使登陆者只访问当前目录
  • 原文地址:https://www.cnblogs.com/juncaoit/p/12629858.html
Copyright © 2020-2023  润新知