/ / Jak wybrać wartości do var za pomocą operacji BIT? - postgresql, funkcja

Jak wybrać wartości do zmiennej przy użyciu operacji BIT? - Postgresql, funkcja

Mam stolik

create table t
(id serial primary key,
name text,
val INTEGER);


insert into t(name, val)
select "user1", x"0001"::INT
union all
select "user1", x"0010"::INT
union all
select "user1", x"0110"::INT
union all
select "user2", x"0001"::INT

Jak mogę wybrać wartości do zmiennej za pomocą operacji bitowej dla danej nazwy?

create or replace function get_union(
name text,
OUT retval int
)
as $BODY$
begin
-- ?
end
$BODY$ language plpgsql;

Na przykład funkcja powinna zwrócić 111 dla nazwy „użytkownik1”

select to_hex(x"0001"::int | x"0010"::int | x"0100"::int);
---
111

Odpowiedzi:

1 dla odpowiedzi № 1
select to_hex(bit_or(val)), bit_or(val), bit_or(val)::bit(16)
from t
where name = "user1";
to_hex | bit_or |      bit_or
--------+--------+------------------
111    |    273 | 0000000100010001