我需要在mysql中进行搜索:
SELECT *
FROM table
WHERE data REGEXP 'firstValue|secondValue|thirdValue'
我需要的是检索匹配的行,例如firstValue,并在查询结果中返回这些行和匹配的术语,例如:
id - data - matched_term
1 - blabla firstValue - firstValue
2 - blabla secondValue blabla - secondValue
答案 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')