二进制字符串类型

神通数据库系统提供的二进制字符串类型如下表:

表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;