晚上好人;
我在MySql中有一个表,我想更新如下。正如我所讨论的那样,我已经搜索了这个主题并且尚未找到解决方案。
MySQl数据库中的表名为ALK_Results_NEW
,ICD9
列中的数据包含以逗号分隔的数据。
我需要保留ICD9
列中的第一个集合,例如第一行有V57.9,246.9。
我需要将V57.9保留在ICD9
列中,然后将246.9移到ICD9_SECONDARY
列中。
如果一行超过2,那么我需要将所有其他行移到ICD9_OTHER
列中(此列可以使用逗号分隔多个ICD9
代码)
总结第一个代码需要留在ICD9
列,第二组代码需要移到ICD9_SECONDARY
。移动数据后,ICD9
列应该只有最新的代码集。
非常感谢任何帮助。
答案 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
上测试逻辑输出。