位串类型

神通数据库支持的位串类型如下表:

表23神通数据库支持的位串类型

类型名 别名 描述 有效范围
BIT(n)   定长位串类型,位串长度必须小于等于n 最大长度为8*8000bit
BIT VARYING(n) VARBIT(n) 变长位串类型,位串长度小于等于n 最大长度为8*8000bit

神通数据库中位串类型是 1 和 0 组成的字串,用BIT(n)、BIT VARYING(n)或VARBIT(n)表示,这里的 n 是一个正整数。 VARBIT(n) 是 BIT VARYING(n) 的别名,两者效果相同。

BIT、BIT VARYING 类型的数据都匹配长度小于或等于 n 的二进制字符串,BIT 类型长度小于 n 时,会自动在左侧补 0。 没有长度声明的 BIT 等效于 BIT(1),没有长度声明的 BIT VARYING 表示 8*8000 比特位。 BIT 、 BIT VARYING 类型常量的长度不能超过其有效范围8*8000bit。

神通数据库中位串型常量的表示形式如下:

B'<二进制常数>...' 或 X'<十六进制常数>...'

其中,二进制常数取值为 0 或 1。 十六进制常数取值为0、1、2、3、4、5、6、7、8、9、a、b、c、d、e、f、A、B、C、D、E、F 如 B'100',B'1', X'09876F'

示例1: 使用位串类型

--  清理环境
DROP TABLE tab1 CASCADE;

CREATE TABLE tab1 (a BIT(3));

--  插入位串类型数据
INSERT INTO tab1 VALUES (B'101');

--  插入位串数据(长度小于列类型长度)
--  数据库实际插入成功,在左侧补0
INSERT INTO tab1 VALUES (B'10');

--  插入位串数据(长度大于列类型长度)
--  插入失败
INSERT INTO tab1 VALUES (B'1010');
ERROR, 字符串数据长度不匹配, Bit string length 4 does not match type BIT(3)




--  查询表中位串类型数据
SELECT * FROM tab1;
A(bit)      |
------------
101         |
------------
010         |
总数目:2


--  使用位串类型进行查询
SELECT SUBSTRING(a FROM 1 FOR 2) FROM tab1;
SUBSTRING(bit)      |
--------------------
10                  |
--------------------
01                  |
总数目:2


--  删除表
DROP TABLE tab1;