9.6. 位串函數和操作符

本節描述用於檢查和操作位串的函數和操作符,也就是操作類型為 bitbit varying 的數值的函數和操作符。除了常用的比較操作符之外,還可以使用 Table 9-10 裡顯示的操作符。 &|,和 # 的位串操作數必須等長。 在移位的時候,保留原始的位串的的長度,如例子所示。

Table 9-10. 位串操作符

操作符描述例子結果
|| 連接B'10001' || B'011'10001011
& 按位 AND(與)B'10001' & B'01101'00001
| 按位 OR(或)B'10001' | B'01101'11101
# 按位 XOR(異或)B'10001' # B'01101'11100
~ 按位 NOT(非)~ B'10001'01110
<< 按位左移B'10001' << 301000
>> 按位右移B'10001' >> 200100

下面的 SQL 標準函數除了可以用於字元串之外,也可以用於位串: lengthbit_lengthoctet_lengthpositionsubstring

另外,我們可以在整數和 bit 之間來回轉換。例子:

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

請注意,如果只是轉換為 "bit",意思是轉換成 bit(1), 因此只會轉換成整數的最低位。

注意: PostgreSQL 8.0 以前,把一個整數轉換成 bit(n) 將拷貝整數的最左邊的 n 位, 而現在是拷貝最右邊的 n 位。還有,把一個整數轉換成比整數本身長位串,就會在最左邊擴展符號。