RAW列的第一个字节被截断

时间:2019-03-25 13:22:54

标签: sql oracle oracle12c

我对二进制数据有问题,我有一个C#代码,它将二进制数据插入表中,列类型为RAW(64),在某些情况下某些字节丢失。我发现问题是如果我的数据以0xFFFE开头,那么我可以在sql中创建这种情况:

CREATE TABLE BlobTable(
    testData BLOB
);

然后我插入记录:

INSERT INTO BlobTable VALUES(hextoraw('FFFE01'));
INSERT INTO BlobTable VALUES(hextoraw('01'));
INSERT INTO BlobTable VALUES(hextoraw('FFFF01'));
INSERT INTO BlobTable VALUES(hextoraw('FFFEFFFEFFFE01'));

然后我这样做:

SELECT DUMP ( CAST ( testData AS RAW( 128 ) ) ) FROM BlobTable;

结果是:

Typ=23 Len=1: 1
Typ=23 Len=1: 1
Typ=23 Len=3: 255,255,1
Typ=23 Len=5: 255,254,255,254,1

请相信,问题出在开头是0xFFFE个字节,在两种情况下,当我将这些字节转换为RAW时,都缺少第一个0xFFFE。您知道为什么会这样吗?我也想知道字节的任何其他组合是否会造成相同的情况。

0 个答案:

没有答案