2015-01-06 6 views
0

Good Evening Everyone;MySQL перемещает значения, разделенные запятыми, из одной колонки в другую

У меня есть таблица в MySql, которую я хотел бы обновить следующим образом. Так же, как FYI, я искал эту тему и еще не нашел решения.

Имя таблицы ALK_Results_NEW в базе данных MySQl, данные в столбце ICD9 содержат данные, разделенные запятыми. Мне нужно сохранить первый набор в столбце ICD9, так что, например, первая строка имеет V57.9, 246.9. Мне нужно сохранить V57.9 в колонке ICD9 и переместить 246,9 в колонку ICD9_SECONDARY. Если строка имеет более чем 2, то мне нужно, чтобы переместить все остальное в ICD9_OTHER колонка (Эта колонка может иметь Mulitple ICD9 код через запятую)

Чтобы подвести итог первого код должен оставаться в ICD9 колонки, а второй набор кодов необходимо переместить в ICD9_SECONDARY. После перемещения данных столбец ICD9 должен иметь только код forst.

Любая помощь была бы принята с благодарностью.

ответ

0

Предполагая, что два столбца уже существует в таблице, вы можете изменить данные используя update:

update alk_results_new 
    set icd9_secondary = substr(icd9, instr(icd9, ',') + 1), 
     icd9 = substring_index(icd9, ',', 1) 
    where icd9 like '%,%'; 

EDIT:

Oops, я не понимал, что три колонны. Подход аналогичен, но немного сложнее, потому что вам нужно учесть длину строк. Я думаю, что следующий должен делать то, что вы хотите:

update alk_results_new 
    set icd9_other = (case when icd9 like '%,%,%' 
          then substr(icd9, length(substring_index(icd9, ',', 2)) + 2) 
         end), 
     icd9_secondary = (case when icd9 like '%,%' 
           then substring_index(substring_index(icd9, ',', 2), ',', -1) 
          end), 
     icd9 = substring_index(icd9, ',', 1); 

Примечание: проверить логику вне на select перед запуском update.

+0

Благодарим за отзыв, только один быстрый вопрос, я вижу, где вы устанавливаете icd9_secondary и icd9, но не упоминаете ICD9_OTHER. Мне нужно сохранить первый набор в столбце ICD9, так что, например, первая строка имеет V57.9, 246.9. Мне нужно сохранить V57.9 в столбце ICD9 и переместить 246,9 в столбец ICD9_SECONDARY. Если строка имеет более двух, то мне нужно переместить все остальные в столбец ICD9_OTHER (этот столбец может содержать Mulitple ICD9 Codes, разделенные запятыми) –

+0

Кстати, я купил вашу книгу несколько месяцев назад, и это потрясает !!! действительно помогли мне перенести мои навыки на новый уровень –

+0

Эй, я получаю эту ошибку при использовании предложения select, любых предложений? У вас возникла ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса для использования рядом с «SET ICD9_Other = (случай, когда icd9 нравится«%,%,% » , а затем SU 'по строке 2 –

Смежные вопросы