我是否可以使用在“IN” MySQL的声明通配符?
题
我想运行是这样的:
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')
您可以使用更复杂的正则表达式。 “我”使得它不区分大小写。 请参阅甲骨文文档
不隶属于 StackOverflow