SAS:表名包含太多字符

SAS:表名包含太多字符,sas,Sas,SAS的表名和列名限制为32个字符。我有一个场景,我想从表a中选择并与表B连接(其中表B的名称超过32个字符)。如果我尝试在procsql中编写此代码,我会得到一个错误,即表B的名称超过32个字符 有人知道我是怎么弄到这个的吗?SAS不能处理这么长名称的“表”。您必须重命名该文件。假设该文件适用于非SAS DBMS,如SQL Server,则应使用直通SQL来处理select,因为它适用于RDBMS的语法,并且没有32个字符的限制 即: 您还可以要求DBA构造一个名称长度小于32个字符的视图。如

SAS的表名和列名限制为32个字符。我有一个场景,我想从表a中选择并与表B连接(其中表B的名称超过32个字符)。如果我尝试在procsql中编写此代码,我会得到一个错误,即表B的名称超过32个字符


有人知道我是怎么弄到这个的吗?

SAS不能处理这么长名称的“表”。您必须重命名该文件。

假设该文件适用于非SAS DBMS,如SQL Server,则应使用直通SQL来处理select,因为它适用于RDBMS的语法,并且没有32个字符的限制

即:


您还可以要求DBA构造一个名称长度小于32个字符的视图。

如果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;

非常感谢。但是整个SQL不能下推到数据库中:-(必须创建一个SQL来检索表,然后在内存中连接它。
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;