【发布时间】:2026-02-17 17:05:01
【问题描述】:
我正在使用 SAS,并且我正在通过 ODBC 连接使用来自 Oracle 数据库的数据。在 Oracle SQL Developer 环境中,我需要从该数据库中获取 data_type = RAW 的一些字段。
SAS 错误地读取了这些内容,并将每个字段都返回为 2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A,其中 Type = Character and Format 和 Informat = $HEX40。
我尝试做的一件事是将它作为字符变量读入,使用字符格式和使用以下代码的信息,其中 mylib 是连接到 Oracle 数据库的库。
data want;
set mylib.have (obs= 10000);
format raw_data_var char40.;
informat raw_data_var char40.;
run;
这将格式更改为字符,但随后将单元格转换为********************
我还尝试找到一些关于读取二进制数据的 SAS 文档,https://documentation.sas.com/?docsetId=lrcon&docsetTarget=p1vu9u7w1ieua7n17973igt2cq3c.htm&docsetVersion=9.4&locale=en 但不幸的是,我找不到有用的帮助。
有人可以指出我使用数据步骤或 proc sql 读取原始数据类型的正确方向吗?
谢谢
【问题讨论】:
-
如果不是 '2A'x 重复 20 次,您希望 RAW 对象的前 20 个字节包含什么?为什么不直接要求 Oracle 将其转换为十六进制字符串,以便 SAS 将其视为字符变量?
-
第一个问题不是反问。如果您不知道正确答案是什么,您怎么知道 SAS 显示的内容是错误的?您不必修改 Oracle 数据库以要求 Oracle 转换其一侧的值。请参阅@Richard 的答案。
标签: sas