简单来说
假设int
我的表中的类型字段包含任何二进制四位数字(0 和 1 的组合,例如 1010、0110 等)。我如何有选择地只更新其中一些数字而不更改其他数字。
详细信息
我的表中有一个user_relevance_code
字段permissions
(类型为int(10)
),它存储四位数字,代表此特定权限与哪些帐户类型相关。这四个数字分别存储一个 1 或 0,表示它是否相关。从左到右,存储与这些帐户类型的相关性 - Manager
、Publisher
、Advertiser
、Developer
。因此,0110
存储在此字段中的值意味着它与经理、发布商相关,而与广告商无关。
现在,在任何时候,假设我需要将其中一些权限标记为与经理相关,或者使它们与广告商和发布商相关,同时使它们与经理无关,以及所有此类随机操作。对于所有这些情况,我需要保持其他数字不变。这意味着,如果我只需要更新经理相关性数字,我不应该接触发布商和广告商数字。
问题
很明显,我需要对需要应用的代码进行二进制 ORuser_relevance_code
并存储它的当前值,但这对我不起作用。
对于使一些与发布者相关的权限的操作,我尝试了这个查询 -
update permissions set user_relevance_code = (0100 | user_relevance_code) where <condition to update some permissions>
但这并没有产生预期的结果。那些1000
较早的记录已更新到1004
我希望它们成为的位置1100
(仅将第 2 位更新为 1 并将其他记录保持原样)。
我还尝试将该字段的类型更改为binary
. 我想我做错了。