⌘+k ctrl+k
1.4 (LTS)
搜索快捷键 cmd + k | ctrl + k
位字符串函数

本节介绍用于检查和操作 BITSTRING 值的函数和运算符。执行按位与 (AND)、或 (OR) 和异或 (XOR) 操作时,位串的长度必须相等。进行位移操作时,将保留字符串的原始长度。

位串运算符

下表显示了 BIT 类型可用的数学运算符。

运算符 描述 示例 结果
& 按位与 (AND) '10101'::BITSTRING & '10001'::BITSTRING 10001
| 按位或 (OR) '1011'::BITSTRING | '0001'::BITSTRING 1011
异或 (xor) 按位异或 (XOR) xor('101'::BITSTRING, '001'::BITSTRING) 100
~ 按位非 (NOT) ~('101'::BITSTRING) 010
<< 按位左移 '1001011'::BITSTRING << 3 1011000
>> 按位右移 '1001011'::BITSTRING >> 3 0001001

位字符串函数

下表显示了 BIT 类型可用的标量函数。

名称 描述
bit_count(bitstring) 返回位串中已设置位(1)的数量。
bit_length(bitstring) 返回位串的位数。
bit_position(substring, bitstring) 返回指定子串在位串中首次出现的起始索引,如果不存在则返回 0。第一个(最左侧)位的索引为 1。
bitstring(bitstring, length) 返回指定长度的位串。
get_bit(bitstring, index) 提取位串中的第 n 位;第一个(最左侧)位的索引为 0。
length(bitstring) bit_length 的别名。
octet_length(bitstring) 返回位串的字节数。
set_bit(bitstring, index, new_value) 将位串中的第 n 位设置为 new_value;第一个(最左侧)位的索引为 0。返回一个新的位串。

bit_count(bitstring)

描述 返回位串中已设置位(1)的数量。
示例 bit_count('1101011'::BITSTRING)
结果 5

bit_length(bitstring)

描述 返回位串的位数。
示例 bit_length('1101011'::BITSTRING)
结果 7

bit_position(substring, bitstring)

描述 返回指定子串在位串中首次出现的起始索引,如果不存在则返回 0。第一个(最左侧)位的索引为 1
示例 bit_position('010'::BITSTRING, '1110101'::BITSTRING)
结果 4

bitstring(bitstring, length)

描述 返回指定长度的位串。
示例 bitstring('1010'::BITSTRING, 7)
结果 0001010

get_bit(bitstring, index)

描述 提取位串中的第 n 位;第一个(最左侧)位的索引为 0。
示例 get_bit('0110010'::BITSTRING, 2)
结果 1

length(bitstring)

描述 bit_length 的别名。
示例 length('1101011'::BITSTRING)
结果 7

octet_length(bitstring)

描述 返回位串的字节数。
示例 octet_length('1101011'::BITSTRING)
结果 1

set_bit(bitstring, index, new_value)

描述 将位串中的第 n 位设置为 new_value;第一个(最左侧)位的索引为 0。返回一个新的位串。
示例 set_bit('0110010'::BITSTRING, 2, 0)
结果 0100010

位串聚合函数

这些聚合函数可用于 BIT 类型。

名称 描述
bit_and(arg) 对给定表达式中的所有位串执行按位与 (AND) 操作。
bit_or(arg) 对给定表达式中的所有位串执行按位或 (OR) 操作。
bit_xor(arg) 对给定表达式中的所有位串执行按位异或 (XOR) 操作。
bitstring_agg(arg) 返回一个位串,其中设置了 arg 中定义的每个不同位置的位。
bitstring_agg(arg, min, max) 返回一个位串,其中设置了 arg 中定义的每个不同位置的位。所有位置必须在 [min, max] 范围内,否则将抛出 Out of Range Error(越界错误)。

bit_and(arg)

描述 对给定表达式中的所有位串执行按位与 (AND) 操作。
示例 bit_and(A)

bit_or(arg)

描述 对给定表达式中的所有位串执行按位或 (OR) 操作。
示例 bit_or(A)

bit_xor(arg)

描述 对给定表达式中的所有位串执行按位异或 (XOR) 操作。
示例 bit_xor(A)

bitstring_agg(arg)

描述 bitstring_agg 函数接受任何整数类型作为输入,并返回一个位串,其中为每个不同的值设置了位。最左边的位代表列中的最小值,最右边的位代表最大值。如果可能,将从列统计信息中检索最小值和最大值。否则,也可以手动提供最小值和最大值。
示例 bitstring_agg(A)

提示:bit_countbitstring_agg 的组合可用作 count(DISTINCT ...) 的替代方案,在低基数和密集值的情况下可能会提高性能。

bitstring_agg(arg, min, max)

描述 返回一个位串,其中设置了 arg 中定义的每个不同位置的位。所有位置必须在 [min, max] 范围内,否则将抛出 Out of Range Error(越界错误)。
示例 bitstring_agg(A, 1, 42)
© 2025 DuckDB 基金会,阿姆斯特丹,荷兰
行为准则 商标使用指南