MYSQL按位或多个条目

时间:2013-01-29 16:34:38

标签: mysql bit-manipulation

我需要根据所有文章的状态(也是位)更新作业的状态(位)。

例如,我有一个Job,其中有以下文章

A: status = 1001
B: status = 1011
C: status = 0010

现在我希望工作状态为= A OR B或C = 1011。

任何方式我都可以在MYSQL中执行此操作,而无需在所有文章中进行循环操作?

谢谢!

1 个答案:

答案 0 :(得分:1)

与许多问题一样,这是阅读文档的简单案例:MySQL Bit Functions

但是,让我们在这里直截了当。这些值是否为bitmasks?如果是这种情况(我确定是这样),那么B等于A | C,这有点奇怪。通常,位掩码以下列方式工作......

A = 0001
B = 0010
C = 0100
...etc.

通过这种方式,您可以组合值并为多个选项设置位掩码帐户,因此ACA | C)的组合将为0101

位掩码的全部目的是它们可以在固定长度的字符串中表示多个值,因此它们具有空间效率。缺点是它们不会产生人类可读的输出,除非您习惯于查看 The Matrix

另一方面,我可能会离开。

但是,为了让您前进,我相信您正在寻找BIT_OR函数:MySQL GROUP BY (Aggregate) Functions,它会计算并返回OR中所有位的按位expr