Если пользовательский ввод {"кнопка", "текст", "страница", "элемент"}
Попробуйте следующее:
SELECT * FROM XYZ
WHERE ((value like '%button%') +
(value like '%text%') +
(value like '%page%') +
(value like '%element%')) >= 3
Основная суть здесь в том, что Like %..%
является функцией сравнения, и она возвращает 0 или 1, в зависимости от соответствия.
Из вашего описания проблемы кажется, что может быть найдена любая комбинация n-1 слов, или , все n слов могут быть найдены.
Итак, 3 или более входных ключевых слова должны быть найдены в value
. Таким образом, сумма всех этих условий сравнения должна составлять по крайней мере 3. Это должно учитывать все возможные комбинации .
Итак, для n количества входов, вы сделаете что-то вроде следующего:
SELECT * FROM XYZ
WHERE ((value like '%value_1%') +
(value like '%value_2%') +
....
(value like '%value_n-1%') +
(value like '%value_n%')) >= n-1
Для n = 1 это будет особый случай, и вы просто сделаете следующее:
SELECT * FROM XYZ
WHERE value LIKE '%value_1%'