我有一个充满重要信息的数据库......我需要更改信息以适应新的格式......
当前信息遵循以下格式......(注意这全部插入一个单元格中)
DataString1:SomeOtherString1:MoreString1|DataString2:SomeOtherString2:MoreString2|DataString3:SomeOtherString3:MoreString3
我需要能够做到以下几点...... 1)找到所有' |'符号。 2)对于每个' |'符号我需要找到第二个':'在它之前。 3)插入另一个':'在步骤2的结果之前。
我可以通过PHP等其他语言的代码来实现这一点,但我希望能够通过SQL来实现。
上面的例子会变成这个......(我粗略地说明了变化......)
DataString1::SomeOtherString1:MoreString1|DataString2::SomeOtherString2:MoreString2|DataString3::SomeOtherString3:MoreString3
我最终只是制作一个PHP脚本来实现这一点,我甚至不确定我想要的是完全有可能使用MySQL,因为有超过30个实例|在每个单元格中,超过180个实例:'在每个单元格....如果有人有答案随时发布,如果它的工作,我将其投票作为最佳答案
答案 0 :(得分:0)
在sql中,子串可以像这个子串(表达式,起始位置,长度)一样使用,如果你的出现是重复那么你将不得不创建一个更新脚本,它将检查字符长度的子串位置,让我们说
DataString1
这里S的位置是5,你应该算出|的出现并将其保存到变量
select @sd substring (column_name ,start,length) from table where --conditons
Update table set column_name = '' where substring (column_name ,start,length) = '|'
你必须得到@sd的出现并做数学来整合字符串并更新你的细胞
答案 1 :(得分:0)
我最终只是制作一个PHP脚本来做这个,我甚至不确定我想要的是完全可能的MySQL,因为有超过30个实例|在每个单元格中,每个单元格中有180多个':'实例....如果有人有答案可以随意发布,如果有效,我会将其作为最佳答案投票。