1

varbinary(255)タイプのother_group_idsというフィールドを持つテーブルを使用しています。その例の値は次のようになります:3,7,14。ユーザーが特定のグループに属しているかどうかを確認するクエリがあります。たとえば、グループ4に属しているかどうかを確認するために、次のようにします。

SELECT user.* FROM users AS user WHERE user.other_group_ids LIKE '%4%';

これは問題なく機能しますが、問題は14でもキャッチされることです。クエリを変更して4に一致するようにするにはどうすればよいですか。ただし、14や41などの他の値には一致しません。

洞察をありがとうございました!

4

1 に答える 1

1

あなたの質問に答えるには、次のようなことができます。

SELECT user.* FROM users AS user 
WHERE user.other_group_ids LIKE '%,4,%' OR
    user.other_group_ids LIKE '4,%' OR
    user.other_group_ids LIKE '%,4'

複数の値を持つ列を持つことは正規化されないことに注意してください。可能であれば、これを修正するようにしてください。正規化するには、とuser_groupを持つという名前のテーブルを作成します。主キーは であり、参照テーブルとして機能します。次に、グループ 4 に属するユーザーを簡単に照会できます。usergroup(user, group)

于 2012-10-30T17:48:58.787 に答える