我有一个表 T,其中包含两列 C1 和 C2。
我想编写一个查询,如下所示:
UPDATE TABLE T
SET C2 = REGEX_REPLACE(
"(REG_SUB_PART1)(REG_SUB_PART2)(REG_SUB_PART3)",
C1,
REG_SUB_PART1
)
WHERE C2="ABC";
实际上,我想使用另一列 C1,假设 URL“http://www.google.com ”并将 C2 设置为其中的一部分,假设使用 $3
(第三部分) 的正则表达式 "(http://)?(www\.)?([a-zA-Z0-9]*)"
.
因此,C2 应设置为“google.com”。
如何使用 MySql 来完成?
PS:请不要专注于特定的正则表达式。
最佳答案
没有办法在 MySQL 中按照 http://dev.mysql.com/doc/refman/5.0/en/regexp.html 执行正则表达式捕获组。 。 但是,如果您知道 c1 中的起始索引,则可以采用另一种方法来完成类似的事情。
更新 t set c2= substring(c1,12) 其中 c2 = 'abc';
这将从“http://www.google.com”获取子字符串“google.com” ',前提是 c1 列中的值。
其他一些可能派上用场的 MySQL 字符串函数是 substring、substring_index 和locate。
关于mysql - 根据另一列查询 mysql 中的 REGEX_REPLACE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20097845/