我想运行是这样的:

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引擎)。

其他提示

也许一个更好的解决方案将是使用一个布尔搜索针对全文索引

编辑:我看着它,它仅支持在端的话通配符:

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')

您可以使用更复杂的正则表达式。 “我”使得它不区分大小写。 请参阅甲骨文文档

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top