我试图搜索并替换" http"协议到" https"在我的MySql数据库中的某些域中的"链接"仅包含网址的表格。
如果我要将所有网址更改为" https"我会使用REPLACE功能。 但由于它是某些域名,我必须使用REGEXP:
SELECT long_url
FROM links
WHERE long_url REGEXP '^http\:\/\/(www|academic|www3)\.?domain\.com'
到目前为止,我已进入搜索阶段。
我查看了文档,截至目前,我看不出用sql查询得到的结果替换。
请注意我只能访问MySql数据库,我没有PHP或任何东西来运行比SQL查询更聪明的东西。
答案 0 :(得分:2)
MySQL没有正则表达式替换支持(也许你可能自己编写的UDF之外)。但我们可以在您的更新的REGEXP
子句中使用WHERE
:
UPDATE links
SET long_url = REPLACE(long_url, 'http://', 'https://')
WHERE long_url REGEXP '^http\:\/\/(www|academic|www3)\.?domain\.com';
答案 1 :(得分:1)
由于匹配的字符串始终以http:开头,因此您可以执行以下操作:
SELECT 'https' || SUBSTRING(long_url , 4)
FROM links
WHERE long_url REGEXP '^http\:\/\/(www|academic|www3)\.?openu\.ac\.il'
UPDATE links
SET long_url = 'https' || SUBSTRING(long_url , 4)
WHERE long_url REGEXP '^http\:\/\/(www|academic|www3)\.?openu\.ac\.il'
我不知道任何mysql正则表达式替换函数。