1. 程式人生 > 資料庫 >mysql單欄位多值分割和合並的處理方法

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單欄位多值分割和合並內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!