| PostgreSQL 8.0.0 中文文件(轉譯自 PostgreSQL 中國 製作的簡體中文版本) | ||||
|---|---|---|---|---|
| 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.3 獲取有關位串常量的語法的訊息。還有一些位邏輯操作符和位處理函數可用; 見Section 9.6。
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