Например, я получил массив:
carBrand: 'ford', 'volve', 'honda'
Я хотел бы найти поле, содержащее все его элементы, просто как:
SELECT * FROM car_company WHERE car_company.brandStory LIKE '%ford%' AND car_company.brandStory LIKE '%volve%'
AND car_company.brandStory LIKE '%honda%';
И массив является входным параметром вне хранимой процедуры
Пока у меня есть почти два подхода, но они все еще не годятся для меня:
- используйте REGEXP
, например:
SET carBrand = 'ford|volve|honda'; //input parameter
SELECT * FROM car_company WHERE car_company.brandStory REGEXP carBrand;
Но на самом деле код делает оператор OR, все, что я хочу, это оператор AND.
используйте полнотекстовый индекс
, например:
SET carBrand = '+ford +volve +honda'; //input parameter
SELECT * FROM car_company WHERE MATCH (brandStory) AGAINST (carBrand IN BOOLEAN MODE);
Это самое близкое решение, которое я нашел ,, но я действительно не хочу устанавливать полный текстовый указатель.
Есть ли другое решение? Спасибо всем!