在mysql中使用REGXP进行搜索和替换

时间:2017-12-17 09:19:47

标签: mysql regex

我试图搜索并替换" 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查询更聪明的东西。

2 个答案:

答案 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正则表达式替换函数。