Я хотел бы преобразовать такой запрос, как:
SELECT BoolA, BoolB, BoolC, BoolD FROM MyTable;
В битовую маску, где биты определены значениями выше.
Например, если BoolA
и BoolD
верны, я бы хотел 1001
или 9
.
Я имею в виду следующее:
SELECT
CASE WHEN BoolD THEN 2^0 ELSE 0 END +
CASE WHEN BoolC THEN 2^1 ELSE 0 END +
CASE WHEN BoolB THEN 2^2 ELSE 0 END +
CASE WHEN BoolA THEN 2^3 ELSE 0 END
FROM MyTable;
Но я не уверен, что это лучший подход и кажется довольно многословным. Есть ли простой способ сделать это?