Mysql 如何在整个字符串中查找其出现位置的最后三个索引处的字符,并在其前面添加另一个字符?

Mysql 如何在整个字符串中查找其出现位置的最后三个索引处的字符,并在其前面添加另一个字符?,mysql,substring,Mysql,Substring,我有一个数据库,里面有很多重要的信息。。。我需要更改信息以适应新格式 当前信息遵循此格式。。。(请注意,这全部插入到一个单元格中) 我需要能够做到以下几点。。。 1) 找到所有“|”符号。 2) 对于每个“|”符号,我需要在其前面找到第二个“:”。 3) 在步骤2的结果之前插入另一个“:” 我可以通过另一种语言(比如PHP)的代码来实现这一点,但我希望能够通过SQL实现这一点 上面的例子会变成这样。。。(我将更改加粗了…) 我最终只是制作了一个PHP脚本来实现这一点,我甚至不确定我想要的东西是否

我有一个数据库,里面有很多重要的信息。。。我需要更改信息以适应新格式

当前信息遵循此格式。。。(请注意,这全部插入到一个单元格中)

我需要能够做到以下几点。。。 1) 找到所有“|”符号。 2) 对于每个“|”符号,我需要在其前面找到第二个“:”。 3) 在步骤2的结果之前插入另一个“:”

我可以通过另一种语言(比如PHP)的代码来实现这一点,但我希望能够通过SQL实现这一点

上面的例子会变成这样。。。(我将更改加粗了…)


我最终只是制作了一个PHP脚本来实现这一点,我甚至不确定我想要的东西是否完全可以用MySQL实现,因为每个单元格中有30多个|实例,每个单元格中有180多个“:”实例。。。。如果任何人有一个答案,请随意发布,如果它有效,我会将其投票为sql中的最佳answ

,子字符串可以像此子字符串一样使用(表达式、起始位置、长度),如果重复出现,则必须创建一个更新脚本,该脚本将检查字符长度处的子字符串位置

 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的出现,然后做数学运算来浓缩字符串并更新你的单元格

我最终只是制作了一个PHP脚本来完成这项工作,我甚至不确定我想要的是MySQL,因为每个单元格中有30多个|实例,每个单元格中有180多个“:”实例。。。。如果有人有答案,请随意发布,如果有效,我会将其选为最佳答案。

我不能依赖数学,因为存储的数据总是大小不一。。。因此,我需要能够在每一个“|”之前找到第二个“:”并在每一个“|”之前放置一个额外的“:”最后一个“:”Fwiw,我也可以在php中这样做
 DataString1
select @sd substring (column_name ,start,length) from table where --conditons
Update table set column_name = '' where substring (column_name ,start,length) = '|'