注冊|登錄

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

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

Latest technology最新技術

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

瀏覽量:2500

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;

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

主站蜘蛛池模板: 欧美一级免费观看| 一二三四在线视频社区8| 精品成人AV一区二区三区| 国产高清中文字幕| 亚洲中文无码线在线观看| 老司机深夜福利影院| 国产成人精品免费久久久久| 一区二区在线播放视频| 日本动态120秒免费| 亚洲高清偷拍一区二区三区| 高嫁肉柳风车动漫| 国产精品女同一区二区| 中文天堂在线www| 欧美亚洲桃花综合| 午夜精品久久久久久毛片| 18分钟处破好疼高清视频| 成人黄色在线网站| 久久男人的天堂色偷偷| 男人和女人做免费做爽爽视频| 国产成人av大片大片在线播放| eeuss影院天堂影院| 手机在线看片国产日韩生活片| 亚洲嫩草影院在线观看| 综合人妻久久一区二区精品| 国产福利91精品一区二区三区| 一级毛片女人18水真多| 最近高清中文在线字幕在线观看| 亚洲精品伊人久久久久| 肉柳高嫁03集在线播放| 国产成人AV一区二区三区无码| 一级黄色香蕉视频| 娇妻当着我的面被4p经历| 久久综合88熟人妻| 漂亮女教师被浣肠| 国产人妖xxxx做受视频| 69堂在线观看| 成人亚洲欧美日韩在线观看| 五月天亚洲色图| 欧美另类xxxxx另类| 亚洲欧美另类精品久久久| 美国式的禁忌80版|