17

私は次のようなものを実行したいと思います:

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

方法はありますか?または、少なくともすべてのキーワードに対してクエリを動的に構築するよりも良い方法があります:

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

ありがとう。

4

4 に答える 4

19

あなたが思いついたものよりも優れているかどうかはわかりませんが、MySQL の正規表現機能を使用できます。

select * from my_table where field rlike 'apple|orange';

また、他の人が言及したように、MySQL の全文検索機能を使用できます (ただし、MyISAM エンジンを使用している場合のみ)。

于 2009-10-30T21:11:27.970 に答える
1

それがあなたがやろうとしていることなら、おそらくMySQLの全文索引を見るべきです。

于 2009-10-30T21:08:41.983 に答える
1

全文索引に対してブール検索を使用するのがより良い解決策でしょうか?

編集:調べてみたところ、単語の末尾のワイルドカードのみがサポートされています:

ALTER TABLE table ADD FULLTEXT INDEX (field);

SELECT * FROM table WHERE MATCH (field)
AGAINST ('orange* apple*' IN BOOLEAN MODE);
于 2009-10-30T21:09:01.047 に答える