• ベストアンサー

カンマ区切りの文字列を検索する

「1,2,3,5,10…」のようにカンマ区切りになっている文字列が格納されているカラム(number)があり、その文字列に含まれている数字と検索用配列「1,2,3」と比較して存在すれば抽出するみたいなことがやりたいのですがよくわかりません。 カンマ区切りではなく単一の数字であれば select * from tests where number IN(1,2,3); みたいな感じでnumberがIN()のなかにあるかどうかで抽出できると思うのですが、この場合はどのようにすればよいのでしょうか。 ちょっと説明が下手でわかりづらいかと思いますがよろしくおねがいします。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

この場合は 検索用テーブル id number x 1 x 2 x 3 x 5 x 10 y 1 y 7 ・・・ 的なデータの持ち方をするのが妥当です。 (もちろんきちんとインデックスを貼っておくこと) select * from tests inner join (selcet disctinct id from 検索用テーブル where number IN (1,2,3) ) using(id) のように処理をすればよいでしょう

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

データの持ち方がすでにSQLの概念を逸脱しているように見えますが・・・ 仮にできたとしてもとてもスピードはでないですし、チューニングも できないように思えます。 正規化について学習なさることをお勧めします。

sakukou10
質問者

お礼

ありがとうございます。 数字を一纏めに格納したかったので数字間をカンマ区切りにして格納したのですが、別テーブルのidなどを持たせてそちらに一つ一つ格納したほうが良かったのでしょうか。 勉強します。

関連するQ&A