MYSQL統(tǒng)計逗號分隔字段元素的個數
寫SQL的時候會遇到如下的問題,統(tǒng)計如下表中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)類型的,我們并沒有現(xiàn)成的方法統(tǒng)計這個形如list的字段元素(數據庫并沒有l(wèi)ist這樣的對象),只能通過字符串處理的方式。其實規(guī)律很簡單,我們只需要統(tǒng)計,的個數然后+1就可以了。那么如何求逗號個數呢?我們使用原字符串長度 與 替換了逗號后的字符串長度 相減即可,求字符串長度用char_length()函數。
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 |
可以看到,使用這個方法準確無誤地計算出了逗號分隔字段元素的數量。
到此這篇關于MYSQL統(tǒng)計逗號分隔字段元素的個數 的文章就介紹到這了,更多相關MYSQL統(tǒng)計逗號元素內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

