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

标签 mysql regex

我正在尝试在我的 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/

相关文章:

Java将对象写入MySQL - 每个字段还是序列化字节数组?

MySQL Alter Table 使用通配符更改所有字段类型?

php更新mysql

javascript 替换为正则表达式有奇怪的行为

c++ - 向 C++ 文件添加命名空间的脚本

javascript - 使用正则表达式获取 url 变量

mysql - 从两个不同的表计算百分比

MySQL (id >= N AND col2 IS NULL) 查询对于大 N 意外地慢

java - 寻找 Java 正则表达式以匹配给定范围内的最后 2 位数字

java - 用于搜索带有空格和反斜杠性能问题的字符串的正则表达式程序