我想运行类似的东西:
select * from table where field in ("%apple%", "%orange%")
有办法吗?或者至少有一种比为每个关键字动态构建查询更好的方法:
select * from table where field like "%apple%" or field like "%orange%"
感谢。
答案 0 :(得分:14)
我不确定它比你提出的要好,但你可以使用MySQL's regex capabilities:
select * from my_table where field rlike 'apple|orange';
此外,正如其他人所提到的,您可以使用MySQL's full text search功能(但仅在您使用MyISAM引擎时)。
答案 1 :(得分:1)
你可能应该看看MySQL's full text indexing,如果你正在尝试这样做的话。
答案 2 :(得分:1)
也许更好的解决方案是使用boolean search against a fulltext index?
编辑:我查了一下它只支持 end 字样的通配符:
ALTER TABLE table ADD FULLTEXT INDEX (field);
SELECT * FROM table WHERE MATCH (field)
AGAINST ('orange* apple*' IN BOOLEAN MODE);
答案 3 :(得分:-1)
在Oracle中,您可以这样做:
select * from table where
regexp_like (column, 'apple|orange', 'i')
您可以使用更复杂的正则表达式。 'i'使它变得不敏感。 见Oracle docs