按照另一列查询mysql中的REGEX_REPLACE

时间:2013-11-20 13:54:35

标签: mysql regex

我有一个表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说“google.com”(第三部分)正则表达式"(http://)?(www\.)?([a-zA-Z0-9]*)"

因此,C2应设置为“google.com”。

如何使用MySql完成?

PS:请不要专注于特定的正则表达式。

1 个答案:

答案 0 :(得分:1)

根据http://dev.mysql.com/doc/refman/5.0/en/regexp.html,无法在MySQL中执行正则表达式捕获组。 但是,如果你知道c1中的起始索引,那么完成类似事情的另一种方法就是。

更新t set c2 = substring(c1,12)其中c2 ='abc';

这将从'http://www.google.com'获取子字符串'google.com',前提是这是c1列中的值。

其他一些可能派上用场的MySQL字符串函数是substring,substring_index和locate。