我可以在“IN”MySQL语句中使用通配符吗?

时间:2009-10-30 21:04:47

标签: sql mysql wildcard

我想运行类似的东西:

select * from table where field in ("%apple%", "%orange%")

有办法吗?或者至少有一种比为每个关键字动态构建查询更好的方法:

select * from table where field like "%apple%" or field like "%orange%"

感谢。

4 个答案:

答案 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