Mysql REGEXP返回结果和匹配值

时间:2014-01-14 15:37:33

标签: mysql regex match

我需要在mysql中进行搜索:

SELECT * 
 FROM table 
 WHERE data REGEXP 'firstValue|secondValue|thirdValue'

我需要的是检索匹配的行,例如firstValue,并在查询结果中返回这些行和匹配的术语,例如:

id     -     data                        - matched_term
 1     -  blabla firstValue              -  firstValue
 2     -  blabla secondValue blabla      -  secondValue

1 个答案:

答案 0 :(得分:0)

嗯,你可以这样做:

SELECT t.*,
       (case when data regexp 'firstvalue' then 'firstValue'
             when data regexp 'secondValue' then 'secondValue'
             when data regexp 'thirdValue' then 'thirdValue'
        end) as which
FROM table t
WHERE data REGEXP 'firstValue|secondValue|thirdValue';

如果你只进行不断的比较(意味着data完全匹配其中一个值),那么我建议使用不同的函数:

SELECT t.*,
       (case when data = 'firstvalue' then 'firstValue'
             when data = 'secondValue' then 'secondValue'
             when data = 'thirdValue' then 'thirdValue'
        end) as which
FROM table t
WHERE data in (firstValue, secondValue, thirdValue')