我想运行是这样的:我可以在“IN”MySQL语句中使用通配符吗?
select * from table where field in ("%apple%", "%orange%")
有没有办法?或者至少有没有比动态构建每个关键字查询更好的方法:
select * from table where field like "%apple%" or field like "%orange%"
谢谢。
我想运行是这样的:我可以在“IN”MySQL语句中使用通配符吗?
select * from table where field in ("%apple%", "%orange%")
有没有办法?或者至少有没有比动态构建每个关键字查询更好的方法:
select * from table where field like "%apple%" or field like "%orange%"
谢谢。
我不知道这是任何比你来干什么了,但你可以使用MySQL's regex capabilities更好:
select * from my_table where field rlike 'apple|orange';
而且,正如其他人所说,你可以使用MySQL's full text search能力(但只有当你使用MyISAM引擎)。
你可能应该看看MySQL's full text indexing,如果这是你想要做的。
也许更好的解决方案是使用boolean search against a fulltext index?
编辑:我看着它,它只是在年底的话支持通配符:
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')
可以使用更复杂的正则表达式。 '我'使它不敏感。 请参阅Oracle docs
是的,看起来像最简单的方法。谢谢。希望它不会影响性能。 – serg 2009-10-30 21:15:56
@ serg555:我不认为你会得到良好的表现出正则表达式的方法,因为没有索引将被使用。我会推荐全文搜索方法。 – Asaph 2009-10-30 21:33:27
是的,但它也有其缺点:只有myisam表,只有一端通配符。 – serg 2009-10-30 22:09:03