PostgreSQL数据类型--布尔类型、位串类型

 2015年03月25日    2087     声明


PostgreSQL支持标准的 SQL boolean 数据类型,boolean值只能有两种: '真'('True') 或 '假'('False')。boolean有两种值外的第三种状态,'未知'('Unknow'),用 SQL空状态表示。位串就是一串 1 和 0 的字符串。它们可以用于存储和视觉化位掩码。


1.布尔类型

boolean类型存储空间为1字节,可接受的"真"值的有效文本输入值有:TRUE、't'、'true'、'y'、'yes'、'1'。"假"值可接受的有效输入值有:FALSE、'f'、'false'、'n'、'no'、'0'。建议使用与SQL标准兼容的TRUE和FALSE做为boolean类型的输入值。查询时使用字母 t 和 f做为boolean型数据显示。例如,users表中有列used字段为boolea类型,字段查询后显示如下:

 used
-------
 t 
 f  


2.位串类型

有两种类型的SQL位类型:bit(n) 和 bit varying(n);bit类型的数据必须准确匹配长度n; bit varying类型数据是最大长度为n的变长类型;把一个位串值转换成bit(n),那么它的右边将被截断或者在右边补齐零,以符合定义的n位长度,不会抛出任何错误。把一个位串数值转换成 bit varying(n),如果它超过了n位,那么它的右边将被截断。示例:创建包括a(bit),b(bit varying)两列表test,插入数据后执行查询,SQL语句如下:

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