Mysql
主页 > 数据库 > Mysql >

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

2023-01-20 | 佚名 | 点击:

写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

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

原文链接:https://blog.csdn.net/Higherbrothers/article/details/114292959
相关文章
最新更新