Отъезд docs on bit operators для Pg.
По существу &
работает только на двух одинаковых типов (как правило, немного или целое), поэтому model_mask
должны быть CAST
ред от VARCHAR к чему-то разумное, как бит или INT:
models_mask::int & 1
-или - models_mask::int::bit & b'1'
Вы можете узнать, какие типы оператор работает с использованием \doS
в psql
pg_catalog | & | bigint | bigint | bigint | bitwise and
pg_catalog | & | bit | bit | bit | bitwise and
pg_catalog | & | inet | inet | inet | bitwise and
pg_catalog | & | integer | integer | integer | bitwise and
pg_catalog | & | smallint | smallint | smallint | bitwise and
Вот краткий пример для получения дополнительной информации
# SELECT 11 & 15 AS int, b'1011' & b'1111' AS bin INTO foo;
SELECT
# \d foo
Table "public.foo"
Column | Type | Modifiers
--------+---------+-----------
int | integer |
bin | "bit" |
# SELECT * FROM foo;
int | bin
-----+------
11 | 1011
Отлично! Спасибо за решение и объяснение. –