2015-06-12 3 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

Edit: 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; 
Смежные вопросы