2011-10-26 13 views
2

はのは、おもちゃの例として、次の表を見てみましょう:SQLクエリ - リストフィールド

ID /へ/ステータス
1 /スティーブ、ジミー/ 0,2
2 /ジョン、ジュリア/ 1、 2
/ジュリア3、ペギー/ 0,1

私は「ジュリア」「へ」であり、どこで彼女の対応する「ステータス」は「0」である行を取得したいです。

この簡単な例では、行番号3です。

このようなクエリをSQLに書き込むにはどうすればよいですか?

P.S.私はSQLiteを使用しています。

+0

明確にするには - '(1、" steve、jimmy "、" 0,2 ")は最初の行ですか? –

+0

'to'カラムには常に2つの名前がありますか? – sll

+0

マットにはい。いいえ。ご注意いただきありがとうございます。 – user1015216

答えて

5

SQLiteには、単一の列に埋め込まれたコンマ区切りのリストを操作する組み込み関数はありません。他のデータベースもそうですが、コンマで区切られた別の文字列内の別の値のインデックスに関連付けられた1つのコンマ区切りの文字列から値を取得するという、あなたの要件には問題があります。

これを行うには、2つの列値と2つの文字列値を取り、最初の列の最初の値のインデックスを取得し、その列の同じインデックスから値を抽出するユーザー定義のSQLite関数を記述する必要があります。その値を第2の指定値と比較する。

一般に、このようなコンマ区切りの文字列は、リレーショナルデータベースではno-noです。正直なところ、私はSQLでこの問題を解決しようとしません。データベース構造の正規化がオプションではない場合は、コードで行います。

+0

+1、実際の暗黙の問題に対処してください! –

+0

+1これは、オペラが望んでいたことを考えた唯一の答えです。「〜」フィールドと彼の**対応する「ステータス」 – Lamak

+0

ありがとう、ラリー! – user1015216