| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 9. 函數和操作符 | Fast Forward | Next |
本節描述用於檢查和操作位串的函數和操作符,也就是操作類型為 bit 和 bit 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' << 3 | 01000 |
| >> | 按位右移 | B'10001' >> 2 | 00100 |
下面的 SQL 標準函數除了可以用於字元串之外,也可以用於位串: length, bit_length, octet_length, position, substring。
另外,我們可以在整數和 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 位。還有,把一個整數轉換成比整數本身長位串,就會在最左邊擴展符號。