1

我有一个标志枚举数组,我用我的程序作为数值创建并存储在数据库中。无论如何,是否有 Postgres 函数来检查是否设置了特定位?

所以它会是:

value1 = 1
value2 = 2
vaule3 = 4
....
value10 = 512

我想检查 534 是否有 value2 标志。那可能吗?

4

1 回答 1

1

是的,有一个非常方便的数字“按位与”运算符&integer

SELECT 534 & value2 = value2;

当与 2 的幂进行逻辑“与”运算时,如果设置了该位,则返回相同的 2 幂。(因为 2 的每个幂都由正数的二进制表示中的一个不同位表示integer。)否则你会得到 0。将结果与值本身进行比较,你会得到TRUEFALSE。瞧。

有关的:

于 2018-02-26T23:13:45.653 回答