mysql單字段多值分割和合並的處理方法
多個值合並展示
現在我們有如圖一到圖二的需求
怎麼做?
如下sql:
SELECT id,GROUP_CONCAT(DISTINCT str) as str from test GROUP BY id
相關知識點
GROUP_CONCAT
GROUP_CONCAT([DISTINCT] 要連接的字段 [Order BY ASC/DESC 排序字段] [Separator ‘分隔符’])
多個值拆分展示
現在我們的需求和第一個例子相反
由圖三
到圖四
這裡就稍微復雜瞭,首先對於str提前做瞭如圖的處理,即字符+’,’的一對一對應處理,其次,因為mysql沒有序列功能,所以我們需要提前準備一張序列表,最大id應該大於單個字段內最大項數
具體sql如下:
SELECT t.id,SUBSTRING_INDEX(SUBSTRING_INDEX(str,',',s.id),',',-1) as str from test2 t join sequence s on s.id<(LENGTH(t.str)/2+1) ORDER BY t.id
相關知識點
SUBSTRING_INDEX(str,delim,count)
SUBSTRING_INDEX(要處理的字符串,分隔符,計數)
如果count是正數,那麼就是從左往右數,第N個分隔符的左邊的全部內容
如果是負數,那麼就是從右邊開始數,第N個分隔符右邊的所有內容
總結
到此這篇關於mysql單字段多值分割和合並處理的文章就介紹到這瞭,更多相關mysql單字段多值分割和合並內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- MySQL實現用逗號進行拼接、以逗號進行分割
- MySql字符串拆分實現split功能(字段分割轉列)
- MySQL 十大常用字符串函數詳解
- MySQL新手入門進階語句匯總
- MySQL連表查詢分組去重的實現示例