有限,无尽Oracle RAW数据类型长度(oracle raw长度)
有限,无尽:Oracle RAW数据类型长度
在Oracle数据库中,RAW数据类型是一种用于存储二进制数据的格式。一般情况下,RAW类型的长度是限制的,且不能用于存储超过其限定长度的数据。然而,在一些情况下,我们可能需要存储超过限制长度的二进制数据,这时我们就需要使用Oracle提供的Extended RAW类型或LOB类型。
原始RAW类型的默认长度是2000个字节,而Extended RAW的最大长度是32767个字节。如果我们想要超过32767个字节,那么必须使用LOB类型。
下面是一个简单的演示,我们将通过代码来说明Oracle RAW数据类型的长度限制。
CREATE TABLE RAW_DATA(
ID NUMBER(10) PRIMARY KEY,
DATA RAW(20)
);
此时,我们创建一个名为RAW_DATA的表,其中包含了一个ID列和一个DATA列,DATA列的最大长度为20个字节。我们可以使用以下查询语句来查看某列的数据类型及其最大长度:
SELECT COLUMN_NAME, DATA_TYPE, DATA_LENGTH
FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = ‘RAW_DATA’
AND COLUMN_NAME = ‘DATA’;
最终输出结果为:
COLUMN_NAME | DATA_TYPE | DATA_LENGTH
———– | ———|————
DATA | RAW | 20
结论是:在原始RAW类型下,DATA列的最大长度为20个字节。
尝试插入数据,让我们对这个结论进行验证:
INSERT INTO RAW_DATA(ID, DATA)
VALUES (1, ‘1234567890ABCDEF01234567’);
这里的DATA值被拆分成了4个字节的一组。如下图所示:
ID | DATA
— | ———–
1 | 1234567890ABCD
INSERT INTO RAW_DATA(ID, DATA)
VALUES (2, ‘1234567890ABCDEF0123456789ABCDEF01234567’);
这里的DATA值有12个字符,因此,它被拆分成了两个6个字符的组。 如下图所示:
ID | DATA
— | —————-
2 | 1234567890AB
2 | CDEF01234567
在上面的示例中,我们使用了原始RAW类型,由于这个数据类型的长度是固定的,因此无法处理大量的二进制数据。因此,我们必须使用Extended RAW或LOB类型。
使用Extended RAW类型:
CREATE TABLE EXTENDED_RAW_DATA(
ID NUMBER(10) PRIMARY KEY,
DATA EXT_RAW
);
此时,DATA列的最大长度为32767字节。
使用LOB类型:
CREATE TABLE LOB_DATA(
ID NUMBER(10) PRIMARY KEY,
DATA CLOB
);
或
CREATE TABLE BLOB_DATA(
ID NUMBER(10) PRIMARY KEY,
DATA BLOB
);
CLOB类型用于存储字符串,而BLOB类型用于存储二进制数据。
我们还可以通过以下查询语句来查看有关数据类型及其长度的有用信息:
SELECT * FROM ALL_TYPE_ATTRS
WHERE OWNER = ‘MY_SCHEMA’
AND TYPE_NAME = ‘RAW’;
Oracle RAW数据类型的长度限制在一些情况下可能会成为我们工作的障碍。为了处理超过其限定长度的二进制数据,请使用Oracle提供的Extended RAW、CLOB或BLOB类型。