跳到主要内容

BITMAP_OR

描述

计算两个及以上的 Bitmap 的并集,返回新的 Bitmap。

语法

bitmap_or(<bitmap1>, <bitmap2>, ..., <bitmapN>)

参数

参数描述
<bitmap1>第一个 Bitmap
<bitmap2>第二个 Bitmap
......
<bitmapN>第 N 个 Bitmap

返回值

多个 Bitmap 并集的 Bitmap。

示例

计算两个相同 Bitmap 的并集:

select bitmap_count(bitmap_or(to_bitmap(1), to_bitmap(1))) cnt;

结果如下:

+------+
| cnt |
+------+
| 1 |
+------+

将两个相同 Bitmap 的并集转换为字符串:

select bitmap_to_string(bitmap_or(to_bitmap(1), to_bitmap(1)));

结果如下:

+---------------------------------------------------------+
| bitmap_to_string(bitmap_or(to_bitmap(1), to_bitmap(1))) |
+---------------------------------------------------------+
| 1 |
+---------------------------------------------------------+

计算两个不同 Bitmap 的并集:

select bitmap_count(bitmap_or(to_bitmap(1), to_bitmap(2))) cnt;

结果如下:

+------+
| cnt |
+------+
| 2 |
+------+

将两个不同 Bitmap 的并集转换为字符串:

select bitmap_to_string(bitmap_or(to_bitmap(1), to_bitmap(2)));

结果如下:

+---------------------------------------------------------+
| bitmap_to_string(bitmap_or(to_bitmap(1), to_bitmap(2))) |
+---------------------------------------------------------+
| 1,2 |
+---------------------------------------------------------+

计算多个 Bitmap(包括 NULL 值)的并集:

select bitmap_to_string(bitmap_or(to_bitmap(1), to_bitmap(2), to_bitmap(10), to_bitmap(0), NULL)) as res;

结果如下:

+----------+
| res |
+----------+
| 0,1,2,10 |
+----------+

计算多个 Bitmap(包括空 Bitmap)的并集:

select bitmap_to_string(bitmap_or(to_bitmap(1), to_bitmap(2), to_bitmap(10), to_bitmap(0), bitmap_empty())) as res;

结果如下:

+----------+
| res |
+----------+
| 0,1,2,10 |
+----------+

计算由字符串和单个值创建的 Bitmap 的并集:

select bitmap_to_string(bitmap_or(to_bitmap(10), bitmap_from_string('1,2'), bitmap_from_string('1,2,3,4,5'))) as res;

结果如下:

+--------------+
| res |
+--------------+
| 1,2,3,4,5,10 |
+--------------+