Can I convert a bunch of boolean columns to a single bitmap in PostgreSQL?

后端 未结 3 874
暖寄归人
暖寄归人 2020-12-14 12:46

I\'d like to convert a query such as:

SELECT BoolA, BoolB, BoolC, BoolD FROM MyTable;

Into a bitmask, where the bits are defined by the val

3条回答
  •  感情败类
    2020-12-14 13:20

    Maybe like this:

    SELECT
      (CASE WHEN BoolA THEN 1 ELSE 0 END << 0) +
      (CASE WHEN BoolB THEN 1 ELSE 0 END << 1) +
      (CASE WHEN BoolC THEN 1 ELSE 0 END << 2) +
      (CASE WHEN BoolD THEN 1 ELSE 0 END << 3) AS BitMask
    FROM MyTable;
    

    where << is the bitwise shift left operator.

提交回复
热议问题