【MySQL】REGEXPの正規表現検索

MySQLはRDBMSなので、正規化すれば問題ございませんが、
既にテーブルのカラムにカンマ区切りのデータが入っていてデータが変更できない場合のクエリです。

idに1,10,11,111のようなデータが入っているときに1をLIKEで検索すると全て引っかかりますね。
SELECT * FROM table WHERE id LIKE '%1%'

そこでREGEXPにて検索すると正規表現のOR検索でできるので、
検索結果は一件のみ抽出されます。

■MySQL
SELECT * FROM table WHERE id REGEXP '^1$|^1,|,1$|,1,'

■CAKEPHP
$this->Table->find('all', array('conditons' => array('name REGEXP' => '^1$|^1,|,1$|,1,'));

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です