how to replace bitand function and decode oracle function in postgres sql?
select decode(bitand(p.privilege, 2), 2, 'true', 'false') as is_approver
from person p;
tried below sql
select case ((p.privilege & 2 = 2))::int when 2 then 'true' else 'false' end as is_approver
from person p;
CodePudding user response:
The expression p.privilege & 2 = 2 will return a boolean value. If you can work with them inside your application, then all you need is:
select (p.privilege::int & 2) = 2 as is_approver
from person p;
If you really want string values for true and false, then you need to test the boolean value. Your expression is comparing the boolean value to an integer
select case
when (p.privilege::int & 2) = 2 then 'true'
else 'false'
end as is_approver
from person p;
CodePudding user response:
That should be
select (p.privilege::bigint & 2) = 2 as is_approver
from person p;
