MySQL查询删除两个已知字符串之间的所有随机数据

MySQL查询删除两个已知字符串之间的所有随机数据,mysql,sql,database,Mysql,Sql,Database,我有一个MySQl数据库,表名是“post_data”,字段名是“content_data” 我想删除两个已知字符串之间的所有随机数据 我想删除“www.OldDomain.com/”和“/www.NewDomian.com”之间的所有文本 例如: www.OldDomain.com/redirect?randomTexture/www.NewDomian.com/txturl 如有任何建议,我们将不胜感激。假设这些字符串在内容\u数据中仅出现一次,且顺序正确: select concat(su

我有一个MySQl数据库,表名是“post_data”,字段名是“content_data”

我想删除两个已知字符串之间的所有随机数据

我想删除“www.OldDomain.com/”和“/www.NewDomian.com”之间的所有文本

例如:
www.OldDomain.com/redirect?randomTexture/www.NewDomian.com/txturl


如有任何建议,我们将不胜感激。

假设这些字符串在
内容\u数据中仅出现一次,且顺序正确:

select concat(substring_index(content_data, 'www.OldDomain.com', 1),
              'www.OldDomain.com',
              'www.NewDomian.com',
              substring_index(content_data, 'www.NewDomian.com', -1)
             ) 

如果你想用MySQL做这件事,你可以用


我建议使用PHP/Java/C#或任何其他语言来进行此类字符串解析。

您可以使用
LOCATE
SUBSTRING
函数来获取两个所需字符串之间的字符串

SELECT SUBSTRING(
  data,
  LOCATE('www.OldDomain.com/', data) + LENGTH('www.OldDomain.com/'),
  LOCATE('/www.NewDomain.com', data) - (LOCATE('www.OldDomain.com/', data) + LENGTH('www.OldDomain.com/'))
  ) as output
FROM TABLE_NAME;
注意:
TABLE\u NAME
是您的表名,
data
是您的列名,
output
是提取数据的别名

样本运行

CREATE TABLE stack (data varchar(100));
INSERT INTO stack VALUES('www.OldDomain.com/redirect?RandomTextUrl/www.NewDomain.com/txturl');
INSERT INTO stack VALUES('BEFOREwww.OldDomain.com/redirect?RandomTextUrl/www.NewDomain.com/txturl');
INSERT INTO stack VALUES('www.OldDomain.com/redirect?RandomTextUrl/www.NewDomain.com/txturlAFTER');

www.OldDomain.com/redirect?RandomTexture/www.NewDomian.com/txturl应该变成什么?您尝试过我的解决方案吗?如果成功了,请接受答案并投票支持!实际上我的目标是清理数据库,而不仅仅是控制输出。谢谢,我理解。可以在UPDATE命令中使用子字符串\u索引。