我正在使用一个名为other_group_ids的字段的表,该字段的类型为varbinary(255)。它的一个例子是:3,7,14。我有一个查询,检查用户是否在某个组中。例如,为了检查他们是否在第4组中,我就这样做了:
SELECT user.* FROM users AS user WHERE user.other_group_ids LIKE '%4%';
这样做很好,但问题是它也在捕捉14.如何更改我的查询以使其在4上匹配,而不是其他值如14或41?
非常感谢您的任何见解!
答案 0 :(得分: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
的表,其中包含user
和group
。主键为(user, group)
,并将作为参考表。然后,您只需查询第4组中的用户。