MYSQL統(tǒng)計(jì)逗號分隔字段元素的個(gè)數(shù)
寫SQL的時(shí)候會遇到如下的問題,統(tǒng)計(jì)如下表中project_id字段中id的個(gè)數(shù)。
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)計(jì)這個(gè)形如list的字段元素(數(shù)據(jù)庫并沒有l(wèi)ist這樣的對象),只能通過字符串處理的方式。其實(shí)規(guī)律很簡單,我們只需要統(tǒng)計(jì),的個(gè)數(shù)然后+1就可以了。那么如何求逗號個(gè)數(shù)呢?我們使用原字符串長度 與 替換了逗號后的字符串長度 相減即可,求字符串長度用char_length()函數(shù)。
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 |
可以看到,使用這個(gè)方法準(zhǔn)確無誤地計(jì)算出了逗號分隔字段元素的數(shù)量。
到此這篇關(guān)于MYSQL統(tǒng)計(jì)逗號分隔字段元素的個(gè)數(shù) 的文章就介紹到這了,更多相關(guān)MYSQL統(tǒng)計(jì)逗號元素內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql下為數(shù)據(jù)庫設(shè)置交叉權(quán)限的方法
由于 SupeSite 需要調(diào)用 Discuz! 和 UCHome 的數(shù)據(jù),所以如果它們不安裝在同一個(gè)數(shù)據(jù)庫,SupeSite 的數(shù)據(jù)庫用戶必須要對 Discuz! 和 UCHome 的數(shù)據(jù)庫有讀取、修改、刪除等權(quán)限。2011-07-07遠(yuǎn)程連接mysql數(shù)據(jù)庫注意點(diǎn)記錄
有時(shí)候我們需要遠(yuǎn)程連接mysql數(shù)據(jù)庫,那么就需要注意如下問題,需要的朋友可以參考下2012-08-08