Если тип столбца BIGINT
, вы можете использовать двоичный оператор &
для извлечения битов. Например:
select
host,
status,
substr(
concat(
case when status & 1 then ',cpu' else '' end,
case when status & 2 then ',memory' else '' end,
case when status & 4 then ',tmp' else '' end,
case when status & 8 then ',locked' else '' end
),
2) as exceptions
from hosts
Результат:
host status exceptions
-------- ------ -----------------
machine1 1 cpu
machine2 11 cpu,memory,locked
machine3 12 tmp,locked
Пример данных (пример выполнения при БД Fiddle ):
create table hosts (
host varchar(10),
status bigint
);
insert into hosts (host, status) values ('machine1', 1);
insert into hosts (host, status) values ('machine2', 11);
insert into hosts (host, status) values ('machine3', 12);