1. ホーム
  2. mysql

[解決済み] MySQLで「全単語一致」を検索する

2023-06-18 14:34:36

質問

テキストフィールドのキーワードを、"全単語一致" で検索する SQL クエリを書きたいと思います (例: "rid" を検索すると、"arid" には一致せず、"a rid" には一致しなければなりません)。

私はMySQLを使用しています。

幸い、このアプリケーションではパフォーマンスは重要ではなく、データベースサイズと文字列サイズは両方とも快適に小さくなっていますが、私はそれを駆動するPHPよりもSQLで行うことを希望します。

どのように解決するのか?

あなたは REGEXP と、その [[:<:]][[:>:]] という単語境界マーカーがあります。

SELECT *
FROM table 
WHERE keywords REGEXP '[[:<:]]rid[[:>:]]'

2020年に向けてのアップデート。(実際は2018年以上)

MySQL はバージョン 8.0.4 で RegExp-Engine を更新したので、あなたは を使用する必要があります。 を使用する必要があります。 標準 "ワードバウンダリーマーカー ↵。

SELECT *
FROM table 
WHERE keywords REGEXP '\\brid\\b'

また、バックスラッシュは2つ目のバックスラッシュを入れてエスケープする必要があることに注意してください。