| PostgreSQL 7.4 文檔 | ||||
|---|---|---|---|---|
| Prev | Fast Backward | Chapter 8. 數據類型 | Fast Forward | Next |
位串就是一串 1 和 0 的字串.它們可以用于存儲和視覺化位掩碼. 我們有兩種類型的 SQL 位類型: bit(n) 和 bit varying(n); 這裡的 n是一個正整數.
bit類型的數據必須準確匹配長度n; 試圖存儲短些或者長一些的數據都是錯誤的.類型 bit varying 數據是最長 n 的變長 類型;更長的串會被拒絕.寫一個沒有長度的 bit 等效于 bit(1),沒有長度的bit varying 意思是沒有長度限制.
注意: 如果我們明確地把一個位串值轉換成 bit(n), 那麼它的右邊將被截斷或者在右邊補齊零,直到剛好 n 位, 而不會拋出任何錯誤。類似地,如果我們明確地把一個位串數值轉換成 bit varying(n),如果它超過了n 位, 那麼它的右邊將被截斷。
注意: 在PostgreSQL7.2 之前,不管是否有明確的轉換, bit 都會在右邊自動截斷或者在 在右邊填充零的.這個行為現在已經為了和SQL標準兼容修改過來了.
請參考 Section 4.1.2.2 獲取有關位串常量的語法的信息.還有一些位邏輯操作符和位處理函數可用; 見Chapter 9.
Example 8-3. 使用位串類型
CREATE TABLE test (a bit(3), b bit varying(5)); INSERT INTO test VALUES (B'101', B'00'); INSERT INTO test VALUES (B'10', B'101'); ERROR: Bit string length 2 does not match type bit(3) INSERT INTO test VALUES (B'10'::bit(3), B'101'); SELECT * FROM test; a | b -----+----- 101 | 00 100 | 101