Могу ли я преобразовать кучу логических столбцов в одно растровое изображение в PostgreSQL?

Я хотел бы преобразовать такой запрос, как:

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;

Но я не уверен, что это лучший подход и кажется довольно многословным. Есть ли простой способ сделать это?

7
задан Erwin Brandstetter 12 November 2014 в 01:10
поделиться