私は次のようなものを実行したいと思います:
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);