如何通过名为连字符的SAS libname引用SQL Server表

Pat*_*ick 2 sas

我试图使用Proc Sql查询名为Code_07-12_dim的SQL服务器数据库中的表.SAS将连字符解释为其他含义,以下代码返回错误:

proc sql;
SELECT * FROM lib1.Code_07-12_dim;
quit;
Run Code Online (Sandbox Code Playgroud)

日志输出:

ERROR 22-322: Syntax error, expecting one of the following: a name, ;, (, ',', ANSIMISS, AS, CROSS, EXCEPT, FULL, GROUP, HAVING, INNER, INTERSECT, JOIN, LEFT, NATURAL, NOMISS, ORDER, OUTER, RIGHT, UNION, WHERE.

ERROR 200-322: The symbol is not recognized and will be ignored
Run Code Online (Sandbox Code Playgroud)

我怎样才能参考这张桌子?请注意,SQL服务器由另一个部门管理,虽然我打算谴责他们在表名中使用连字符,但我无法更改表的名称.

Joe*_*Joe 6

你应该可以使用:

proc sql;
 SELECT * FROM lib1.'Code_07-12_dim'n;
quit;
Run Code Online (Sandbox Code Playgroud)

这被称为"名字文字",是SAS在其他地方常用的方括号的版本.

您可能还需要该选项options validmemname=any;.