2025年9月25日: PostgreSQL 18 釋出!
支援的版本: 當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1

8.10. 位串型別 #

位串是包含 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 位,它將被截斷。

有關位串常量的語法資訊,請參閱 第 4.1.2.5 節。提供了位邏輯運算子和字串操作函式;請參閱 第 9.6 節

示例 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


一個位串值每 8 位需要 1 位元組,加上 5 或 8 位元組的開銷,具體取決於字串的長度(但長值可能會被壓縮或移出,如 第 8.3 節 中對字元字串的解釋)。

提交更正

如果您在文件中發現任何不正確、不符合您對特定功能的實際經驗或需要進一步說明的內容,請使用 此表格 來報告文件問題。