1

我正在使用一个表,该表有一个名为 other_group_ids 的字段,其类型为 varbinary(255)。它的一个示例值是:3,7,14。我有一个查询来检查用户是否在某个组中。例如,要检查他们是否在第 4 组中,我对其进行 LIKE:

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_grouphasuser和的表group。主键将是(user, group)并且将充当参考表。然后您可以简单地查询组 4 中的用户。

于 2012-10-30T17:48:58.787 回答