【发布时间】:2012-12-24 14:07:44
【问题描述】:
情况
我想在我的 PHP/MySQL 应用程序中转换某些状态字段,以便随时处理多个。下面以目前的 ENUM 字段为例:
STATUS_ACTIVE
STATUS_FROZEN
STATUS_PENDING
STATUS_FLAGGED
STATUS_DELETED
目前,它一次只支持一个。然而,通过将集合转换为二进制,我最终得到了一组字符串。
1 STATUS_ACTIVE
10 STATUS_FROZEN
100 STATUS_PENDING
1000 STATUS_FLAGGED
10000 STATUS_DELETED
现在,在过滤 PHP 方面,我没有任何问题。但是,这会带来很大的(且不必要的)开销。很可能一个条目最终会成为
10010
01110
etc.
问题
我已经做了一些挖掘,我发现的最好的信息实际上是在 stackoverflow 上(具有讽刺意味)here. 有人可以解释那里使用的实际语法或指向正确的 MySQL 手册页面。
目前还不清楚人们会如何假设这些情况:
Changing only the third bit
Searching for 1 on only the fourth bit
Updating two binary flags at the same time
非常感谢您向正确的方向敲门,感谢您的阅读。
编辑:我已经弄清楚了大部分语法。我现在的问题是:是否可以一次更改多个位而不必重新定义整个事物?
I.e
100 -> 1011
1 -> 101
【问题讨论】:
-
实验是一切学习之母。我创建了一个测试数据库来玩弄并改组。不过,我仍然有点好奇是否可以在同一个查询中更改两个位。更新问题
标签: mysql binary bit-manipulation