我正在尝试在我的 MySql 数据库中仅包含 url 的“链接”表中的某些域中搜索“http”协议(protocol)并将其替换为“https”。
如果我要将所有 url 更改为“https”,我会使用 REPLACE 函数。 但因为它是某些域,我必须使用 REGEXP:
SELECT long_url
FROM links
WHERE long_url REGEXP '^http\:\/\/(www|academic|www3)\.?domain\.com'
到目前为止,我已经进入了搜索阶段。 我查看了文档,到目前为止,我看不到用从 sql 查询中获得的结果进行替换的方法。
请注意我只能访问 MySql 数据库,我没有 PHP 或任何可以运行比 SQL 查询更智能的东西。
最佳答案
MySQL 不支持正则表达式替换(可能在您自己编写的 UDF 之外)。但是我们可以在更新的 WHERE
子句中使用 REGEXP
:
UPDATE links
SET long_url = REPLACE(long_url, 'http://', 'https://')
WHERE long_url REGEXP '^http\:\/\/(www|academic|www3)\.?domain\.com';
关于mysql - 在mysql中使用REGEX进行搜索和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47853724/