Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:如何检查varbinary类型中的特定值?_Mysql_Varbinary_Sql Like - Fatal编程技术网

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

MySQL:如何检查varbinary类型中的特定值?,mysql,varbinary,sql-like,Mysql,Varbinary,Sql Like,我正在处理一个表,该表有一个名为other_group_id的字段,该字段的类型为varbinary(255)。例如:3,7,14。我有一个查询,检查用户是否在某个组中。例如,为了检查他们是否属于第4组,我对其进行了一次类似操作: SELECT user.* FROM users AS user WHERE user.other_group_ids LIKE '%4%'; 这很好,但问题是它也很流行。如何更改查询,使其仅匹配4,而不匹配14或41等其他值 非常感谢您的任何见解 要回答您的问题,

我正在处理一个表,该表有一个名为other_group_id的字段,该字段的类型为varbinary(255)。例如:3,7,14。我有一个查询,检查用户是否在某个组中。例如,为了检查他们是否属于第4组,我对其进行了一次类似操作:

SELECT user.* FROM users AS user WHERE user.other_group_ids LIKE '%4%';
这很好,但问题是它也很流行。如何更改查询,使其仅匹配4,而不匹配14或41等其他值


非常感谢您的任何见解

要回答您的问题,您可以执行以下操作:

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\u group
的表,该表包含
user
group
。主键将是
(用户、组)
,并将用作参考表。然后,您只需查询第4组中的用户即可。

要回答您的问题,您可以执行以下操作:

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\u group
的表,该表包含
user
group
。主键将是
(用户、组)
,并将用作参考表。然后,您只需查询第4组中的用户。

1,4
4,8
如何?太棒了!非常感谢,njk和G-Nugget=)那么值
1,4
4,8
呢?太棒了!非常感谢,njk和G-Nugget=)