mysql - 根据另一列查询 mysql 中的 REGEX_REPLACE

标签 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 (第三部分) 的正则表达式 "(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/

相关文章:

regex - 使用 sed 在 linux 中的多个文件中查找和替换字符串(正则表达式)

mysql 正则表达式返回 bool 值而不是值

c# - 使用可选值改进正则表达式

mysql - TypeError : s. removeConstraint 时 replace 不是函数

java - 创建外键的语法错误

C#如何使用C#向mysql中插入数据?

php - 查询2个表并将数据合并到一个数组中

c# - 我怎样才能使正则表达式起作用?

mod_perl 下的 MySQL 驱动程序段错误 - 在哪里寻找问题

C# 简单正则表达式 - 32 个字符,仅包含 0-9 和 a-f (GUID)