MYSQL統(tǒng)計(jì)逗號(hào)分隔字段元素的個(gè)數(shù)
寫(xiě)SQL的時(shí)候會(huì)遇到如下的問(wèn)題,統(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)類(lèi)型的,我們并沒(méi)有現(xiàn)成的方法統(tǒng)計(jì)這個(gè)形如list的字段元素(數(shù)據(jù)庫(kù)并沒(méi)有l(wèi)ist這樣的對(duì)象),只能通過(guò)字符串處理的方式。其實(shí)規(guī)律很簡(jiǎn)單,我們只需要統(tǒng)計(jì),的個(gè)數(shù)然后+1就可以了。那么如何求逗號(hào)個(gè)數(shù)呢?我們使用原字符串長(zhǎng)度 與 替換了逗號(hào)后的字符串長(zhǎng)度 相減即可,求字符串長(zhǎng)度用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)確無(wú)誤地計(jì)算出了逗號(hào)分隔字段元素的數(shù)量。
到此這篇關(guān)于MYSQL統(tǒng)計(jì)逗號(hào)分隔字段元素的個(gè)數(shù) 的文章就介紹到這了,更多相關(guān)MYSQL統(tǒng)計(jì)逗號(hào)元素內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql下為數(shù)據(jù)庫(kù)設(shè)置交叉權(quán)限的方法
由于 SupeSite 需要調(diào)用 Discuz! 和 UCHome 的數(shù)據(jù),所以如果它們不安裝在同一個(gè)數(shù)據(jù)庫(kù),SupeSite 的數(shù)據(jù)庫(kù)用戶必須要對(duì) Discuz! 和 UCHome 的數(shù)據(jù)庫(kù)有讀取、修改、刪除等權(quán)限。2011-07-07
MySQL子查詢中order by不生效問(wèn)題的解決方法
ORDER BY 語(yǔ)句用于根據(jù)指定的列對(duì)結(jié)果集進(jìn)行排序,在日常工作中經(jīng)常會(huì)用到,這篇文章主要給大家介紹了關(guān)于MySQL子查詢中order by不生效問(wèn)題的解決方法,需要的朋友可以參考下2021-07-07
遠(yuǎn)程連接mysql數(shù)據(jù)庫(kù)注意點(diǎn)記錄
有時(shí)候我們需要遠(yuǎn)程連接mysql數(shù)據(jù)庫(kù),那么就需要注意如下問(wèn)題,需要的朋友可以參考下2012-08-08

