MySQL查询删除两个已知字符串之间的所有随机数据
我有一个MySQl数据库,表名是“post_data”,字段名是“content_data” 我想删除两个已知字符串之间的所有随机数据 我想删除“www.OldDomain.com/”和“/www.NewDomian.com”之间的所有文本 例如: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
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索引。