You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL中使用CONCAT与SUBSTRING处理HTTP/HTTPS URL的更新问题

修复MySQL中嵌套URL的前缀保留问题

看起来你遇到的麻烦是在清理表中的嵌套URL时,误把目标URL的HTTPS前缀替换成了HTTP。别担心,咱们用SUBSTRING_INDEX(配合必要时的CONCAT)来修正这个问题,确保处理后的URL完全保留原有的协议前缀:

问题分析

你的目标链接格式是:

https://this.example.com/work-a-link.php?https://that.example.com/thisisworthkeeping.php

原有代码应该是手动拼接了http://前缀,才导致丢失了原有的https://。正确的思路应该是直接提取?分隔符后的完整目标URL,而不是硬编码协议前缀。

解决方案代码

1. 先备份数据(可选但强烈建议)

先创建临时表备份原数据,避免操作失误:

DROP TABLE IF EXISTS content_temp;
CREATE TABLE content_temp AS SELECT * FROM content;

2. 执行正确的更新操作

使用SUBSTRING_INDEX直接提取?后的完整URL,保留原协议前缀:

UPDATE content
SET link = SUBSTRING_INDEX(link, '?', -1)
WHERE link LIKE '%?https://%' OR link LIKE '%?http://%';

代码解释

  • SUBSTRING_INDEX(link, '?', -1):这个函数以?为分隔符,提取字段中最后一段内容(-1表示从右往左取第一个分隔符后的内容),也就是我们需要保留的完整目标URL,不管它是https://还是http://前缀,都会原封不动保留。
  • WHERE条件:确保我们只处理包含嵌套URL的记录,避免误修改其他正常链接。

验证效果

执行后,原链接https://this.example.com/work-a-link.php?https://that.example.com/thisisworthkeeping.php会被更新为:

https://that.example.com/thisisworthkeeping.php

完美保留了原有的HTTPS协议前缀。

内容的提问来源于stack exchange,提问作者Snp

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:10:40