# Roaring Bitmap操作符
DWS自8.1.3集群版本开始，支持高效的位图处理操作符，可用于用户画像，精准营销等场景，极大的提高了查询性能。
#### =
描述：比较两个roaringbitmap是否相等。
返回值类型：bool
示例：
```
SELECT rb_build('{1,2,3}') = rb_build('{1,2,3}');
?column?
----------
t
(1 row)
SELECT rb_build('{2,3}') = rb_build('{1,2,3}');
?column?
----------
f
(1 row)
```
#### \<\>
描述：比较两个roaringbitmap是否不相等。
返回值类型：bool
示例：
```
SELECT rb_build('{1,2,3}') <> rb_build('{1,2,3}');
?column?
----------
f
(1 row)
SELECT rb_build('{2,3}') <> rb_build('{1,2,3}');
?column?
----------
t
(1 row)
```
#### \&
描述：计算两个roaringbitmap交集以后的结果。
返回值类型：roaringbitmap
示例：
```
SELECT rb_to_array(rb_build('{2,3}') & rb_build('{1,2,3}'));
rb_to_array
-------------
{2,3}
(1 row)
```
#### \|
描述：计算两个roaringbitmap并集后的结果。
返回值类型：roaringbitmap
示例：
```
SELECT rb_to_array(rb_build('{2,3}') | rb_build('{1,2,3}'));
rb_to_array
-------------
{1,2,3}
(1 row)
```
#### \|
描述：计算一个roaringbitmap增加一个ID后的结果。
返回值类型：roaringbitmap
示例：
```
SELECT rb_to_array(rb_build('{2,3}') | 4);
rb_to_array
-------------
{2,3,4}
(1 row)
```
#### #
描述：两个roaringbitmap进行异或后的结果。
返回值类型：roaringbitmap
示例：
```
SELECT rb_to_array(rb_build('{2,3}') # rb_build('{1,2,3}'));
rb_to_array
-------------
{1}
(1 row)
```
#### -
描述：计算属于第一个roaringbitmap，但是不属于第二个roaringbitmap的结果集。
返回值类型：roaringbitmap
示例：
```
SELECT rb_to_array(rb_build('{2,3,4}') - rb_build('{1,2,3}'));
rb_to_array
-------------
{4}
(1 row)
```
#### -
描述：从roaringbitmap中去掉一个指定ID后的结果集。
返回值类型：roaringbitmap
示例：
```
SELECT rb_to_array(rb_build('{2,3,4}') - 3);
rb_to_array
-------------
{2,4}
(1 row)
```
#### @\>
描述：操作符前面的roaringbitmap是否包含后面的roaringbitmap。
返回值类型：bool
示例：
```
SELECT rb_build('{2,3,4}') @> rb_build('{2,3}');
?column?
----------
t
(1 row)
SELECT rb_build('{2,3,4}') @> 4;
?column?
----------
t
(1 row)
```
#### \<@
描述：操作符前面的roaringbitmap是否被后面的roaringbitmap包含。
返回值类型：bool
示例：
```
SELECT  4 <@ rb_build('{2,3,4}');
?column?
----------
t
(1 row)
SELECT rb_build('{2,3,4}') <@ rb_build('{2,3}');
?column?
----------
f
(1 row)
```
#### \&\&
描述：两个roaringbitmap如果有交集返回true，否则返回false。
返回值类型：bool
示例：
```
SELECT rb_build('{2,3,4}') && rb_build('{2,3}');
?column?
----------
t
(1 row)
SELECT rb_build('{2,3,4}') && rb_build('{7,8,9}');
?column?
----------
f
(1 row)
```
