我想运行类似的东西:
select * from table where field in ("%apple%", "%orange%")
有办法吗?或者至少有比为每个关键字动态构建查询更好的方法:
select * from table where field like "%apple%" or field like "%orange%"
谢谢。
我不确定它是否比您想出的更好,但您可以使用MySQL 的正则表达式功能:
select * from my_table where field rlike 'apple|orange';
此外,正如其他人所提到的,您可以使用MySQL 的全文搜索功能(但前提是您使用的是 MyISAM 引擎)。
如果您正在尝试这样做,您可能应该查看MySQL 的全文索引。
也许更好的解决方案是对全文索引使用布尔搜索?
编辑:我查了一下,它只支持单词末尾的通配符:
ALTER TABLE table ADD FULLTEXT INDEX (field);
SELECT * FROM table WHERE MATCH (field)
AGAINST ('orange* apple*' IN BOOLEAN MODE);
在 Oracle 中,您可以执行以下操作:
select * from table where
regexp_like (column, 'apple|orange', 'i')
您可以使用更复杂的正则表达式。'i' 使它变得不敏感。请参阅Oracle 文档