广告位联系
返回顶部
分享到

MYSQL统计逗号分隔字段元素的个数

Mysql 来源:互联网 作者:佚名 发布时间:2023-01-20 21:34:58 人浏览
摘要

写SQL的时候会遇到如下的问题,统计如下表中project_id字段中id的个数。 company_id project_id 77 94882,214880,94881,154882,94871,94879 140 2890,2872,3178,4314,4976 6 2173,5101,274884 6 4186,4192,4193 109 214899,94919,9

写SQL的时候会遇到如下的问题,统计如下表中project_id字段中id的个数。

company_id project_id
77 94882,214880,94881,154882,94871,94879
140 2890,2872,3178,4314,4976
6 2173,5101,274884
6 4186,4192,4193
109 214899,94919,94920
305 5000,4999,5011
32 4514,5024,5262
49 1009,1008,1379

注意project_id是varchar(255)类型的,我们并没有现成的方法统计这个形如list的字段元素(数据库并没有list这样的对象),只能通过字符串处理的方式。其实规律很简单,我们只需要统计,的个数然后+1就可以了。那么如何求逗号个数呢?我们使用原字符串长度 与 替换了逗号后的字符串长度 相减即可,求字符串长度用char_length()函数。

1

2

3

4

5

select company_id

     , project_id

     , char_length(project_id) - char_length(replace(project_id,',','')) + 1 as tag_cnt

from makepolo.local_material_tag

order by 3 desc

company_id project_id tag_cnt
77 94882,214880,94881,154882,94871,94879 6
140 2890,2872,3178,4314,4976 5
6 2173,5101,274884 3
6 4186,4192,4193 3
109 214899,94919,94920 3
305 5000,4999,5011 3
32 4514,5024,5262 3
49 1009,1008,1379 3

可以看到,使用这个方法准确无误地计算出了逗号分隔字段元素的数量。


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/Higherbrothers/article/details/114292959
相关文章
  • MySql如何不插入重复数据
    向数据库的插入值时,需要判断插入是否重复,然后插入。 这种操作怎么提高效率 下面说说一些解决方案 1、insert ignore into 当插入数据时,
  • MYSQL统计逗号分隔字段元素的个数
    写SQL的时候会遇到如下的问题,统计如下表中project_id字段中id的个数。 company_id project_id 77 94882,214880,94881,154882,94871,94879 140 2890,2872,3178,4314,
  • MySQL事务的SavePoint简介及操作
    什么是SavePoint SavePoint是数据库事务中的一个概念, 可以将整个事务切割为不同的小事务, 可以选择将状态回滚到某个小事务发生时的样子,
  • mysql查看表大小的方法介绍
    1.查看所有数据库容量大小 1 2 3 4 5 6 7 8 select table_schema as 数据库, sum(table_rows) as 记录数, sum(truncate(data_length/1024/1024, 2)) as 数据容量(MB), sum(
  • MySQL不用like+%实现模糊查询

    MySQL不用like+%实现模糊查询
    我们都知道 InnoDB 在模糊查询数据时使用 %xx 会导致索引失效,但有时需求就是如此,类似这样的需求还有很多,例如,搜索引擎需要根基用
  • SQL通用语法以及分类图文介绍
    MySQL的启动和连接数据模型 MySQL的启动和停止 1.services.msc 2.命令行启停 启动:net start mysql80 停止:net stop mysql80 (命令行窗口以管理员权限打
  • mysql开启各种日志的方法
    以下日志开启均在mysql5.7.32进行测试 general_log general_log支持热开启,热关闭。开启general_log会记录所有操作mysql命令,所以会产生大量文件,
  • Mysql备份的几种方法教程
    1. mysqldump mysqldump是mysql用于转存储数据库的实用程序。它主要产生一个SQL脚本,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等
  • 深入了解MySQL中的慢查询
    一、什么是慢查询 什么是MySQL慢查询呢?其实就是查询的SQL语句耗费较长的时间。 具体耗费多久算慢查询呢?这其实因人而异,有些公司慢
  • MySQL中with rollup的用法及说明

    MySQL中with rollup的用法及说明
    MySQL with rollup的用法 当需要对数据库数据进行分类统计的时候,往往会用上groupby进行分组。 而在groupby后面还可以加入withcube和withrollup等关
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计