9.6. 位字符串函数和运算符

本节介绍用于检查和操作位字符串(即bitbit varying类型的值)的函数和运算符。除了通常的比较运算符外,还可以使用Table 9.13中所示的运算符。 &|#的位串操作数必须具有相等的长度。如示例所示,当进行位移时,将保留字符串的原始长度。

表 9.13. 位字符串运算符

OperatorDescriptionExampleResult
||concatenationB'10001' || B'011'10001011
&bitwise ANDB'10001' & B'01101'00001
|bitwise ORB'10001' | B'01101'11101
#bitwise XORB'10001' # B'01101'11100
~bitwise NOT~ B'10001'01110
<<左移B'10001' << 301000
>>右移B'10001' >> 200100

以下 SQL 标准函数对位字符串和字符串均起作用:lengthbit_lengthoctet_lengthpositionsubstringoverlay

以下函数适用于位字符串和二进制字符串:get_bitset_bit。当使用位字符串时,这些函数将字符串的第一(最左边)位编号为位 0.

此外,可以在bit类型之间进行整数值转换。一些例子:

44::bit(10)                    0000101100
44::bit(3)                     100
cast(-44 as bit(12))           111111010100
'1110'::bit(4)::integer        14

请注意,仅转换为“ bit”意味着转换为bit(1),因此将仅传递整数的最低有效位。

Note

将整数强制转换为bit(n)将复制最右边的n位。将整数转换为比整数本身宽的位字符串宽度将在左侧符号扩展。