MySQL将逗号分隔值从一列移动到另一列

时间:2015-01-06 23:38:50

标签: mysql

晚上好人;

我在MySql中有一个表,我想更新如下。正如我所讨论的那样,我已经搜索了这个主题并且尚未找到解决方案。

MySQl数据库中的表名为ALK_Results_NEWICD9列中的数据包含以逗号分隔的数据。 我需要保留ICD9列中的第一个集合,例如第一行有V57.9,246.9。 我需要将V57.9保留在ICD9列中,然后将246.9移到ICD9_SECONDARY列中。 如果一行超过2,那么我需要将所有其他行移到ICD9_OTHER列中(此列可以使用逗号分隔多个ICD9代码)

总结第一个代码需要留在ICD9列,第二组代码需要移到ICD9_SECONDARY。移动数据后,ICD9列应该只有最新的代码集。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

假设表中已存在两列,您可以使用update更改数据:

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

编辑:

哎呀,我没有意识到有三列。方法类似,但有点复杂,因为您需要考虑字符串的长度。我认为以下应该做你想做的事:

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上测试逻辑输出。