MySQL タグの検索で正規表現を使用する

SQLのデータベースで、スペース区切りで登録されたタグを、完全一致で検索する際に、今まで力技で検索してました。
文字の前後が、行頭、行末、スペースの時で、4パターンでOR検索をしています。

WHERE ((`tag` LIKE '$str') OR (`tag` LIKE '$str %') OR (`tag` LIKE '% $str %') OR (`tag` LIKE '% $str'))

この長くて可読性の悪い命令文を、短くできないかといつも思っていたのですが、なかなか調べてもわかりません。
ええ、やっとできました。

WHERE (`tag` REGEXP '(^| )".$str."($| )')

この、(^| ) と ($| ) に、なかなか気づけませんでした。

コメント

タイトルとURLをコピーしました