如何在整个字符串中的第3个最后一个索引处找到一个字符并在其前面添加另一个字符?

时间:2016-01-19 22:15:22

标签: mysql substring

我有一个充满重要信息的数据库......我需要更改信息以适应新的格式......

当前信息遵循以下格式......(注意这全部插入一个单元格中)

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个实例:'在每个单元格....如果有人有答案随时发布,如果它的工作,我将其投票作为最佳答案

2 个答案:

答案 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多个':'实例....如果有人有答案可以随意发布,如果有效,我会将其作为最佳答案投票。