【发布时间】:2020-03-20 08:12:21
【问题描述】:
例如,我有一个数组:
汽车品牌:“福特”、“沃尔夫”、“本田”
我想搜索一个包含所有元素的字段,就像:
SELECT * FROM car_company WHERE car_company.brandStory LIKE '%ford%' AND car_company.brandStory LIKE '%volve%'
AND car_company.brandStory LIKE '%honda%';
并且数组是存储过程之外的输入参数
到目前为止,我几乎得到了两种方法,但对我来说仍然不好:
- 使用正则表达式
例如:
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);
这是我找到的最接近的解决方案,但我真的不想设置全文索引。
还有其他解决方案吗?谢谢大家!
【问题讨论】: