次のような内容の varchar フィールドがあります。
a,b,c,d
e,d,a,c
b,q,d,e
入力文字列と等しい要素を持つフィールドを持つ行のみを選択するクエリを実行する必要があります。
元の入力: c,a
選択された行:
a,b,c,d
e,d,a,c
OR ('%a%' のようなフィールド OR '%c%' のようなフィールド) を使用せずに可能ですか?
ありがとう
次のような内容の varchar フィールドがあります。
a,b,c,d
e,d,a,c
b,q,d,e
入力文字列と等しい要素を持つフィールドを持つ行のみを選択するクエリを実行する必要があります。
元の入力: c,a
選択された行:
a,b,c,d
e,d,a,c
OR ('%a%' のようなフィールド OR '%c%' のようなフィールド) を使用せずに可能ですか?
ありがとう
はい、使用できます...
WHERE
myField LIKE '%a%' AND myField LIKE '%c%'
ただし、これは SQL に厄介なフィールドがあるように聞こえます。
通常、この種の情報を指定するには、リンク テーブルを使用します。
Table1
id
otherdata...
Table2
id
letter
LinkTable
Table1Id
Table2Id
したがって、LinkTable には、レコードをリンクする多くのエントリがあります。したがって、「a,b,c,d」をフィールドに格納する代わりに、次の 4 つのリンク レコードがあります。
Table1Id Table2Id
1 1 (a)
1 2 (b)
1 3 (c)
1 4 (d)
はい、しかしトリックが必要です: 同じ値を含むがソートされた 2 番目の列を作成します。
a,b,c,d
a,c,d,e
b,d,e,q
これで、クエリを実行できます%a%c%
クエリ文字列が不要な値の部分文字列になる可能性がある場合、これは機能しません。この場合、引用符が必要です。
"a","b","c","d"
"a","c","d","e"
"b","d","e","q"
およびクエリ%"a"%"c"%