程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> mysql行轉列(拆分字符串場景)

mysql行轉列(拆分字符串場景)

編輯:MySQL綜合教程

mysql行轉列(拆分字符串場景)


一對多沒有建立中間表的時候經常會采用分隔符的形式將“多”存儲在“一”的一個字段裡,這樣做的代價是無法向一對多的時候那樣直接關聯查詢,一般采用在程序中分割後分別查詢的辦法。如下圖:

\

如何才能直接用sql語句查詢出下圖的效果呢?

\

可以借助一個序號表,該表中除了連續的id沒有其它字段,id的值范圍取決於"一"中存儲的信息拆分後的數量。

\

實現sql:

 

SELECT
	NAME,
	REPLACE(
		SUBSTRING_INDEX(mobile, ',', a.id),
		CONCAT(
			SUBSTRING_INDEX(mobile, ',', a.id - 1),
			','
		),
		''
	)AS mobile
FROM
	squence a
CROSS JOIN(
	SELECT
		NAME,
		CONCAT(mobile, ',')AS mobile,
		LENGTH(mobile)- LENGTH(REPLACE(mobile, ',', ''))+ 1 AS size
	FROM
		`user`
)b ON a.id <= b.size

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved