3

重複の可能性:
MySQL-LIKEを使用して完全一致の単語を検索する方法は?

たとえば、Imが「ever」という単語を含む行を取得しようとしている場合、これを行うことができます...

SELECT * FROM 'table' WHERE `title` LIKE %ever%

しかし、それはまた、「永遠に、しかし決して」という言葉を含むタイトルの結果を私に与えるでしょう。

自分の単語として「ever」を含むタイトルだけを見つけるにはどうすればよいですか?

4

2 に答える 2

4

REGEXP正規表現を使用し[[:<:]]word[[:>:]]て、検索語の前後に単語の境界を使用して一致させます。

SELECT * FROM `table` WHERE `title` REGEXP '[[:<:]]ever[[:>:]]'

これはデフォルトでは大文字と小文字を区別しないことに注意してください。BINARY大文字と小文字を区別するには、モードで一致させる必要があります。

SELECT * FROM `table` WHERE `title` REGEXP BINARY '[[:<:]]ever[[:>:]]'

ただし、インデックスを使用できないため、大きなテーブルではパフォーマンスが大幅に低下する可能性があります。

編集:申し訳ありませんが、MySQLがサポートしていないPCRE境界がありました。

于 2013-01-04T21:15:38.577 に答える
2

REGEXPおよび[[:<:]][[:>:]]単語境界マーカーを使用できます。

SELECT *
FROM table 
WHERE keywords REGEXP '[[:<:]]ever[[:>:]]'
于 2013-01-04T21:19:44.580 に答える