Вы можете добавить флаги, используя условные выражения к вашему выбору, например:
SELECT *,
IF(field1 LIKE '%foo%', 1, 0) AS field1_matches,
IF(field2 LIKE '%bar%', 1, 0) AS field2_matches,
IF(field3 LIKE '%foobar%', 1, 0) AS field3_matches
FROM TABLE
WHERE field1 LIKE '%foo%'
OR field2 LIKE '%bar%'
OR field3 LIKE '%foobar%'
Если вам нужны результаты в одном поле в виде списка, разделенного запятыми, вы можете объединить результаты, используя CONCAT_WS
и вернуть NULL
в условное выражение, когда нет совпадений:
SELECT *,
CONCAT_WS(',',
IF(field1 LIKE '%foo%', 'field1', NULL),
IF(field2 LIKE '%bar%', 'field2', NULL),
IF(field3 LIKE '%foobar%', 'field3', NULL)
) AS matches
FROM TABLE
WHERE field1 LIKE '%foo%'
OR field2 LIKE '%bar%'
OR field3 LIKE '%foobar%'