SAS对表名和列名具有32个字符的限制。我有一个场景,我想从表A中选择并与表B连接(其中表B的名称大于32个字符)。如果我尝试在PROC SQL中编写它,我会收到一条错误消息,表示表B的名称超过32个字符。
任何人都知道如何解决这个问题?
答案 0 :(得分:2)
假设这与非SAS DBMS(如SQL Server)一起使用,您应该使用passthrough SQL来处理select,因为这与RDBMS的语法一起使用并且没有32个字符的限制
IE:
proc sql;
connect to oledb (... init string ... );
create table work.mydata as
select * from connection to oledb (
... sql server or whatever syntax ...
);
quit;
您还可以要求DBA构建一个具有<长32个字符。
答案 1 :(得分:0)
如果SAS表的字符数超过32个是非法的,则必须重命名物理文件。如果您正在读取数据库表,则可以使用SQL passthrough执行此操作:
proc sql;
connect to odbc(dsn=mydsn user=xxxx pwd=yyy);
select * from connection to odbc
(select * from my_table_with_a_very_Very_Very_Long_name);
disconnect from odbc;
quit;
答案 2 :(得分:-1)
SAS无法使用"表"那个长名。您必须重命名该文件。