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個分隔符右邊的所有內容



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章