重複の可能性:
MySQL-LIKEを使用して完全一致の単語を検索する方法は?
たとえば、Imが「ever」という単語を含む行を取得しようとしている場合、これを行うことができます...
SELECT * FROM 'table' WHERE `title` LIKE %ever%
しかし、それはまた、「永遠に、しかし決して」という言葉を含むタイトルの結果を私に与えるでしょう。
自分の単語として「ever」を含むタイトルだけを見つけるにはどうすればよいですか?
重複の可能性:
MySQL-LIKEを使用して完全一致の単語を検索する方法は?
たとえば、Imが「ever」という単語を含む行を取得しようとしている場合、これを行うことができます...
SELECT * FROM 'table' WHERE `title` LIKE %ever%
しかし、それはまた、「永遠に、しかし決して」という言葉を含むタイトルの結果を私に与えるでしょう。
自分の単語として「ever」を含むタイトルだけを見つけるにはどうすればよいですか?
REGEXP
正規表現を使用し[[:<:]]word[[:>:]]
て、検索語の前後に単語の境界を使用して一致させます。
SELECT * FROM `table` WHERE `title` REGEXP '[[:<:]]ever[[:>:]]'
これはデフォルトでは大文字と小文字を区別しないことに注意してください。BINARY
大文字と小文字を区別するには、モードで一致させる必要があります。
SELECT * FROM `table` WHERE `title` REGEXP BINARY '[[:<:]]ever[[:>:]]'
ただし、インデックスを使用できないため、大きなテーブルではパフォーマンスが大幅に低下する可能性があります。
編集:申し訳ありませんが、MySQLがサポートしていないPCRE境界がありました。
REGEXP
および[[:<:]]
と[[:>:]]
単語境界マーカーを使用できます。
SELECT *
FROM table
WHERE keywords REGEXP '[[:<:]]ever[[:>:]]'