二进制字符串类型¶
神通数据库系统提供的二进制字符串类型如下表:
表25神通数据库系统提供的二进制字符串类型
| 类型名 | 存储 | 描述 | 有效范围 |
|---|---|---|---|
| BINARY(n) | 4 字节加上指定的n字节 | 定长的二进制字串 | 最大长度为 8000字节 |
| VARBINARY(n),RAW(n) | 4 字节加上实际长度 | 变长的二进制字串 | 最大长度为 8000字节 |
Binary(n) 数据类型代表二进制数,二进制数可以是0—9和A—F或a—f的字符组成。也可以直接写为Binary,此时相当于Binary(1)。
输出时二进制数以0x标识开头,其中每两个字符为一组,单个字符前面补零,构成一个字节,如0xf5、0x03ed。
输入时 binary类型的数据可以接受四种形式(两种解析方式):
- 未被单引号括起,不以0x或0X开头
- 未被单引号括起,以0x或0X开头
- 被单引号括起,不以0x或0X开头
- 被单引号括起,以0x或0X开头
注解
神通暂时没有真正的实现数据类型 RAW(n),只将其在语法解析时映射成 VARBINARY(n) 类型。
示例1: 使用二进制字串类型
-- 清理环境
DROP TABLE tab1 CASCADE;
CREATE TABLE tab1 (a BINARY(8));
-- 插入二进制字符串类型(不带引号)
INSERT INTO tab1 VALUES(0xf1);
-- 插入二进制字符串类型(带有引号)
INSERT INTO tab1 VALUES('0xf2');
-- 查询二进制字符串类型
SELECT * FROM tab1 ORDER BY a;
A(binary) |
---------------
0xF100000000000|
000 |
---------------
0xF200000000000|
000 |
总数目:2
-- 删除表
DROP TABLE tab1;
注解
二进制字符串类型也接受整数类型的输入,但是需要注意的是,0x1以及1的输入在含义和字符串表达上是不一样的。 形如0x的输入本身是一个二进制字符串,因此会被系统直接接受,而整数形式的输入则会被系统先转换为合适的二进制串,然后才会被系统接受。 因此,最后形成的二进制度字符串是不同的。
示例2: 使用二进制字串类型(输入整数)
-- 清理环境
DROP TABLE tab2 CASCADE;
CREATE TABLE tab2 (a BINARY(8));
-- 插入二进制字符串类型(插入十六进制)
insert into tab2 values(0x01);
-- 查询二进制字符串类型
SELECT * FROM tab2 ORDER BY a;
A(binary) |
---------------
0x0100000000000|
000 |
总数目:1
-- 插入二进制字符串类型(插入整数)
insert into tab2 values(1);
-- 查询二进制字符串类型
SELECT * FROM tab2 ORDER BY a;
A(binary) |
---------------
0x0000000000000|
001 |
---------------
0x0100000000000|
000 |
总数目:2
-- 删除表
DROP TABLE tab2;