2015-06-12 49 views
-1

我有在细胞这样的数据:
MySQL的:转换行数据到列

1:0100
2:77042609291929541
3:3100000
4:01
7:12014
11:115
14:11502
18:5999
22:0112
25:015
41:00083121
49:7014

我怎样才能把这些值代入列?例如。

col_1 |_______col_2_______ | _ col_3 _ |col_4 |col_5 |.....col_127 |col_128 | 
_____________________________________________________________________________ 

0100 |77042609291929541 | 3100000 |............................. 

回答

0

GROUP_CONCAT是你正在寻找的。 https://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html

编辑:Oups,读你的问题要快, 他们在做什么你问的没有简单的方法,你可能要重新设计你的表。您可能必须循环使用SUBSTRING_INDEX,然后使用\n先分割,然后切割您的:

我没有在哪里测试,所以它可能不工作,但它只是给你一个开始。 (这也只是第一个循环,但内部的循环完全相同)。

SET TEST = "1: 0100 
2: 77042609291929541 
3: 3100000 
4: 01 
7: 12014 
11: 115 
14: 11502 
18: 5999 
22: 0112 
25: 015 
41: 00083121 
49: 7014"; 

SET len = LENGTH(TEST); 
SET startpos = 1; 
REPEAT 
     SET endpos = LOCATE('\n', TEST, startpos); 
     SET item = SUBSTR(TEST, startpos, endpos - startpos); 

     IF item <> '' AND item IS NOT NULL THEN   
      print item; 
     END IF; 
     SET startpos = endpos + 1; 
UNTIL startpos >= len END REPEAT;