位串类型¶
神通数据库支持的位串类型如下表:
表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;