检查枚举类型 PostgreSQL 函数
Check for enum types PostgreSQL function
我有一个标志枚举数组,它是我用我的程序作为数值创建并存储在数据库中的。无论如何有一个 Postgres 函数来检查是否设置了特定位?
所以会是:
value1 = 1
value2 = 2
vaule3 = 4
....
value10 = 512
我想检查 534 是否有 value2 标志。这可能吗?
是的,integer
号码有很方便的"bitwise AND" operator &
:
SELECT 534 & value2 = value2;
当逻辑上 "anded" 具有 2 的幂时,如果该位被设置,则返回 2 的相同幂。 (因为 2 的每个幂都由正数 integer
的二进制表示中的不同位表示。)否则你会得到 0。将结果与值本身进行比较,你会得到 TRUE
或 FALSE
。瞧。
相关:
- Can I convert a bunch of boolean columns to a single bitmap in PostgreSQL?
- Generic bit string comparison against zero in Postgres
我有一个标志枚举数组,它是我用我的程序作为数值创建并存储在数据库中的。无论如何有一个 Postgres 函数来检查是否设置了特定位?
所以会是:
value1 = 1
value2 = 2
vaule3 = 4
....
value10 = 512
我想检查 534 是否有 value2 标志。这可能吗?
是的,integer
号码有很方便的"bitwise AND" operator &
:
SELECT 534 & value2 = value2;
当逻辑上 "anded" 具有 2 的幂时,如果该位被设置,则返回 2 的相同幂。 (因为 2 的每个幂都由正数 integer
的二进制表示中的不同位表示。)否则你会得到 0。将结果与值本身进行比较,你会得到 TRUE
或 FALSE
。瞧。
相关:
- Can I convert a bunch of boolean columns to a single bitmap in PostgreSQL?
- Generic bit string comparison against zero in Postgres