mysql逗號分隔的一行數(shù)據(jù)轉為多行數(shù)據(jù)的兩種方法
原表:

結果:

方法一:如果每條數(shù)據(jù)的被逗號分隔的數(shù)量在637條以內(nèi),使用 mysql.help_topic(mysql自帶的表,只有637個序號)。
select a.id,a.enclosure_ids,
SUBSTRING_INDEX(SUBSTRING_INDEX(a.enclosure_ids,',',b.help_topic_id+1),',',-1) split
from am_voucher a left join mysql.help_topic b
ON b.help_topic_id<(length(a.enclosure_ids)-length(REPLACE(a.enclosure_ids,',',''))+1)
方法二:如果逗號數(shù)量在636個以外,并且原表行數(shù)超過逗號分隔的數(shù)量。
SELECT id,enclosure_ids,
SUBSTRING_INDEX( SUBSTRING_INDEX( enclosure_ids,',',rownums),',', - 1) AS split
FROM am_voucher a join
(SELECT @rownum := @rownum+1 AS rownums FROM (SELECT @rownum :=0) a,am_voucher b) b
on rownums <= (length(a.enclosure_ids)-length(REPLACE(a.enclosure_ids,',',''))+1)
弊端:1.會忽略null值。2.(重要)假設原表中只有2行數(shù)據(jù),但是其中一個字符串被逗號分割為大于2條的數(shù)據(jù),那么 split 所在的那條數(shù)據(jù)就只會拆分出前2條數(shù)據(jù)。
邏輯解釋:
1.length(a.enclosure_ids)-length(REPLACE(a.enclosure_ids,‘,’,‘’))+1
字段原長度 - 字段去除掉逗號的長度 + 1,得到通過逗號分割后有幾條數(shù)據(jù)。
2.SUBSTRING_INDEX(SUBSTRING_INDEX(a.enclosure_ids,‘,’,b.help_topic_id+1),‘,’,-1)
里面的SUBSTRING_INDEX是從每個逗號循環(huán)截取字符串,如下

外面的SUBSTRING_INDEX是根據(jù)里面的數(shù)據(jù)取最后一個逗號后面的數(shù)據(jù)。

到此這篇關于mysql逗號分隔的一行數(shù)據(jù)轉為多行數(shù)據(jù)的實現(xiàn)的文章就介紹到這了,更多相關mysql逗號分隔轉為多行內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mysql數(shù)據(jù)庫delete操作沒報錯卻刪除不了數(shù)據(jù)的解決
本文主要介紹了Mysql數(shù)據(jù)庫delete操作沒報錯卻刪除不了數(shù)據(jù)的解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-01-01
linux下啟動或者關閉MySQL數(shù)據(jù)庫的多種方式
,在Linux服務器上管理MySQL服務是一個基本的運維任務,下面這篇文章主要給大家介紹了關于linux下啟動或者關閉MySQL數(shù)據(jù)庫的多種方式,文中通過代碼以及圖文介紹的非常詳細,需要的朋友可以參考下2024-06-06
MySQL中DATE_FORMAT()函數(shù)將Date轉為字符串
時間、字符串、時間戳之間的互相轉換很常用,下面這篇文章主要給大家介紹了關于MySQL中DATE_FORMAT()函數(shù)將Date轉為字符串的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2022-09-09
MySQL中TIMESTAMP類型返回日期時間數(shù)據(jù)中帶有T的解決
這篇文章主要介紹了MySQL中TIMESTAMP類型返回日期時間數(shù)據(jù)中帶有T的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12
SQL中row_number()?over(partition?by)的用法說明
這篇文章主要介紹了SQL中row_number()?over(partition?by)的用法說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07

