MySQL:如何检查varbinary类型中的特定值?

时间:2012-10-30 17:39:51

标签: mysql varbinary sql-like

我正在使用一个名为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?

非常感谢您的任何见解!

1 个答案:

答案 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的表,其中包含usergroup。主键为(user, group),并将作为参考表。然后,您只需查询第4组中的用户。