有没有办法从MySQL中的正则表达式中提取子匹配?

时间:2010-10-06 13:53:22

标签: sql mysql regex

我知道RLIKEREGEX运算符的存在,但似乎它们不能用于此。

是否有函数或运算符可以帮助我实现拆分文本字段并将其选为两个或多个单独的字段:

SELECT $1 as `field_a`, $2 as `field_b` FROM `table` WHERE `field` RLIKE '^(.+):(.+)$';

我正在编写一个日志分析器,因此在SQL中执行此操作非常方便,无需额外的文本处理。

1 个答案:

答案 0 :(得分:1)

所以你只想把第一次出现的字符串拆分为“:”?

在MySQL中有几种方法可以实现这一点。

使用你的例子,这里有两种方法。希望它们对您有所帮助:

select substr(`field`,1,instr(`field`,':')-1) as `field_a`,
  substr(`field`,instr(`field`,':')+1) as `field_b` 
FROM `table` 
WHERE `field` RLIKE '^(.+):(.+)$';

select left(`field`,instr(`field`,':')-1) as `field_a`,
  right(`field`,length(`field`)-instr(`field`,':')) as `field_b` 
FROM `table` 
WHERE `field` RLIKE '^(.+):(.+)$';