位串函数和操作符#

位串函数和操作符

本节描述用于检查和操作位串的函数和操作符,也就是操作类型为bitbit varying的值的函数和操作符。除了常用的比较操作符之外,还可以使用里显示的操作符。&|#的位串操作数必须等长。在移位的时候,保留原始的位串的的长度,如例子所示。

表 位串操作符

操作符

描述

例子

结果

||

连接

B'10001' || B'011'

10001011

&

按位与

B'10001' & B'01101'

00001

|

按位或

B'10001' | B'01101'

11101

#

按位异或

B'10001' # B'01101'

11100

~

按位求反

~ B'10001'

01110

<<

按位左移

B'10001' << 3

01000

>>

按位右移

B'10001' >> 2

00100

下面的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),因此只会转换整数的最低有效位。

备注

注意

把一个整数转换成bit(n)将拷贝整数的最右边的n位。 把一个整数转换成比整数本身长的位串,就会在最左边扩展符号。