Edited at

SQLでcsv形式のカラムを利用して検索(SELECT)かけたいとき

More than 1 year has passed since last update.

テーブルにCSV形式のカラムを作ってしまって、検索どうしよう...ってなったのでどうしたかをメモ。

正規表現は遅くなるかな、と思って LIKE でやる方法を見つけた。

select * from table where concat(',', column, ',') like '%,1,%'

先頭と末尾にカンマをくっつけてから %,3,% みたいな感じでLIKEすると検索できるっぽい(ググって見つけました)。

これでも相当無理やり感あるので、そもそも検索対象のカラムなのにCSV形式いしてしまうのが間違いかな。

と、思ったらMySQLには便利な関数があるそうで、以下の関数を使えば解決です。

select * from table where find_in_set('1',column);

パフォーマンスに関しても今後調査してみようと思います。