Help us understand the problem. What is going on with this article?

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

More than 3 years have 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);

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away