注冊|登錄

聯系電話:024-31891684  13390130939
沈陽軟件公司--沈陽軟件定制

沈陽軟件開發_沈陽軟件公司_沈陽軟件定制/軟件/最新技術

Latest technology最新技術

MySQL逗號分割字段的行列轉換技巧

瀏覽量:2501

CRM定制請找易勢科技

表數據:

 

ID 

Value

1

tiny,small,big

2

small,medium

3

tiny,big

期望得到結果:

 

ID

Value

1

tiny

1

small

1

big

2

small

2

medium

3

tiny

3

big

正文:

 

#需要處理的表

createtable tbl_name (ID int ,mSize varchar(100));

insertinto tbl_name values (1,'tiny,small,big');

insertinto tbl_name values (2,'small,medium');

insertinto tbl_name values (3,'tiny,big');

 

#用于循環的自增表

createtable incre_table (AutoIncreID int);

insertinto incre_table values (1);

insertinto incre_table values (2);

insertinto incre_table values (3);

 

 

selecta.ID,substring_index(substring_index(a.mSize,',',b.AutoIncreID),',',-1)

from

tbl_name a

join

incre_table b

onb.AutoIncreID <= (length(a.mSize) - length(replace(a.mSize,',',''))+1)

orderby a.ID;

 

原理分析:

這個join最基本原理是笛卡爾積。通過這個方式來實現循環。

以下是具體問題分析:

length(a.Size) - length(replace(a.mSize,',',''))+1 表示了,按照逗號分割后,改列擁有的數值數量,下面簡稱n

join過程的偽代碼:

根據ID進行循環

{

判斷:i 是否<= n

{

獲取最靠近第i 個逗號之前的數據,即substring_index(substring_index(a.mSize,',',b.ID),',',-1)

i = i +1

}

ID = ID +1

}

總結:

這種方法的缺點在于,我們需要一個擁有連續數列的獨立表(這里是incre_table)。并且連續數列的最大值一定要大于符合分割的值的個數。

例如有一行的mSize 有100個逗號分割的值,那么我們的incre_table 就需要有至少100個連續行。

當然,mysql內部也有現成的連續數列表可用。如mysql.help_topic:help_topic_id 共有504個數值,一般能滿足于大部分需求了。

改寫后如下:

 

selecta.ID,substring_index(substring_index(a.mSize,',',b.help_topic_id+1),',',-1)

from

tbl_name a

join

mysql.help_topic b

onb.help_topic_id < (length(a.mSize) - length(replace(a.mSize,',',''))+1)

orderby a.ID;

沈陽團購網|營口網站制作|沈陽軟件公司|軟件定制|網站建設|加盟易勢|提交問題

主站蜘蛛池模板: 调教视频在线观看| 99精品久久99久久久久久| 欧美三级不卡在线观看| 免费大片黄在线观看| 被按摩的人妻中文字幕| 国产真实女人一级毛片 | 中文字幕第一页亚洲| 晓青老师的丝袜系列txt下载| 亚洲狠狠婷婷综合久久蜜芽| 精品三级在线观看| 国产乱子伦真实china| 久久综合九色综合97伊人麻豆| 国产色视频一区二区三区QQ号| 一区二区三区内射美女毛片| 无翼乌全彩里番蛇姬本子| 久久精品这里热有精品| 欧美人和黑人牲交网站上线| 亚洲欧美电影在线一区二区| 男生和女生一起差差差很痛视频| 啄木乌欧美一区二区三区| 高级别墅贵妇交换俱乐部小说| 国产精品jlzz视频| 91精品国产高清91久久久久久| 天天成人综合网| 一本大道久久东京热无码AV| 挺进男同的屁股眼o漫画| 久久伊人精品一区二区三区| 欧美xxxx狂喷水| 亚洲日韩精品欧美一区二区一| 热99精品只有里视频最新| 免费看特级毛片| 精品无码久久久久久久久| 国产v亚洲v天堂a无码| 久久久久成人精品无码| 极品丝袜乱系列集合大全目录| 亚洲成av人片在线观看无码| 正能量www正能量免费网站| 人妖互交videossex| 空白tk2一一视频丨vk| 再灬再灬再灬深一点舒服| 美女扒开内裤羞羞网站|