按位运算符Postgres

时间:2016-06-01 20:17:38

标签: sql postgresql bitwise-operators

我有一个包含二进制值的表,例如:

binaryid    description
1           description1
2           description2
4           description3
8           description4

我还有另一个包含值的表:

DBID BinaryTogether
1    15
1    12
1     6

使用按位运算符,我想得到一个包含以下内容的表:

DBID   BinaryTogether BitwiseResult
1      15             description1,description2,description3,description4
1      12             description3,description4
1       6             description2, description3

1 个答案:

答案 0 :(得分:1)

您可以使用&按位运算符连接这些表,然后使用string_agg函数汇总描述。这是一个例子:

with 
  b(x,d) as (
    values
      (1,'description1'),
      (2,'description2'),
      (4,'description3'),
      (8,'description4')),
  p(y) as (
    values
      (15),
      (12),
      (6))
select
  y,
  string_agg(d,',')
from
  p join b on (x & y != 0)
group by
  y