我有一个表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:请不要专注于特定的正则表达式。
答案 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。