- ベストアンサー
カンマ区切りの文字列を検索する
「1,2,3,5,10…」のようにカンマ区切りになっている文字列が格納されているカラム(number)があり、その文字列に含まれている数字と検索用配列「1,2,3」と比較して存在すれば抽出するみたいなことがやりたいのですがよくわかりません。 カンマ区切りではなく単一の数字であれば select * from tests where number IN(1,2,3); みたいな感じでnumberがIN()のなかにあるかどうかで抽出できると思うのですが、この場合はどのようにすればよいのでしょうか。 ちょっと説明が下手でわかりづらいかと思いますがよろしくおねがいします。
- みんなの回答 (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の概念を逸脱しているように見えますが・・・ 仮にできたとしてもとてもスピードはでないですし、チューニングも できないように思えます。 正規化について学習なさることをお勧めします。
お礼
ありがとうございます。 数字を一纏めに格納したかったので数字間をカンマ区切りにして格納したのですが、別テーブルのidなどを持たせてそちらに一つ一つ格納したほうが良かったのでしょうか。 勉強します。