跳到主要内容
版本:Stable-3.1

bitmap_from_string

功能

将一个字符串转化为一个 bitmap,字符串由逗号分隔的一组 UInt64 数字组成。比如将 "0, 1, 2" 字符串转化为一个 bitmap,会对其中的第 0,1,2 位会进行设置,当输入字段不合法时返回 NULL。

该函数在转换过程中会对字符串里的数值做去重操作。bitmap_from_string() 单独使用无法返回可视化结果,需要与其他函数配合使用,比如 bitmap_to_string()。

语法

BITMAP_FROM_STRING(input)

参数说明

input: 输入的字符串,支持的数据类型为 VARCHAR。字符串里的每个值必须是 UInt64 类型数字。

返回值说明

返回值的数据类型为 BITMAP。如果输入字段不合法,则返回 NULL。如果输入字段为空字符串,则返回空。

示例

-- 返回空字符串。
MySQL > select bitmap_to_string(bitmap_from_string(""));
+--------------------------------------------+
| bitmap_to_string(bitmap_from_string('')) |
+--------------------------------------------+
| |
+--------------------------------------------+

-- 返回 `0,1,2`。
MySQL > select bitmap_to_string(bitmap_from_string("0, 1, 2"));
+-------------------------------------------------+
| bitmap_to_string(bitmap_from_string('0, 1, 2')) |
+-------------------------------------------------+
| 0,1,2 |
+-------------------------------------------------+

-- -1 输入非法,返回 NULL。
MySQL > select bitmap_to_string(bitmap_from_string("-1, 0, 1, 2"));
+-----------------------------------------------------+
| bitmap_to_string(bitmap_from_string('-1, 0, 1, 2')) |
+-----------------------------------------------------+
| NULL |
+-----------------------------------------------------+

-- 2^64 输入非法,返回 NULL。
MySQL > select bitmap_to_string(bitmap_from_string("0, 18446744073709551616"));
+-----------------------------------------------------------------+
| bitmap_to_string(bitmap_from_string('0, 18446744073709551616')) |
+-----------------------------------------------------------------+
| NULL |
+-----------------------------------------------------------------+


-- 对字符串里的重复数值进行去重。

MySQL > select bitmap_to_string(bitmap_from_string("0, 1, 1"));
+-------------------------------------------------+
| bitmap_to_string(bitmap_from_string('0, 1, 1')) |
+-------------------------------------------------+
| 0,1 |
+-------------------------------------------------+