Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SAS从SQL Server连接读取名称包含特殊字符的表_Sql_Sql Server_Sas - Fatal编程技术网

SAS从SQL Server连接读取名称包含特殊字符的表

SAS从SQL Server连接读取名称包含特殊字符的表,sql,sql-server,sas,Sql,Sql Server,Sas,我在SAS中连接到一个sql server表,其中表名为“Additions\u to_Aggregate$”。引号是名称的一部分。因此,在我的SAS编辑器中,当我尝试在部分代码中运行以下命令时,返回错误,因为SAS将其作为字符串而不是表名读取 proc sql; Create Table Name_Compare as SELECT DISTINCT a.Insured_Name, agg.Policy_Holder_Name, a.Segment FROM MySQLLib.ADV_Port

我在SAS中连接到一个sql server表,其中表名为“Additions\u to_Aggregate$”。引号是名称的一部分。因此,在我的SAS编辑器中,当我尝试在部分代码中运行以下命令时,返回错误,因为SAS将其作为字符串而不是表名读取

proc sql;
Create Table Name_Compare as
SELECT DISTINCT a.Insured_Name, agg.Policy_Holder_Name, a.Segment
FROM MySQLLib.ADV_Portfolio_Split as a
LEFT JOIN MySQLLib.'Additions_to_Aggregate$'n.data as agg 
on a.Insured_Name = agg.Policy_Holder_Name;
quit;
有没有办法强制SAS将表名作为文本字符串读取,或者您有其他解决方案的想法?我已经尝试在SAS资源管理器中重命名该表,但出现了此错误,不知道如何解释它


您正在查找名称文字。要么:

LEFT JOIN MySQL.'Additions_to_Aggregate$'n

取决于SAS如何处理DBMS连接中的引号;它可能需要也可能不需要第二对外部引号。如果出于某种原因,您需要在其周围加上单引号(SAS对于宏分辨率以外的单引号/双引号没有任何特殊意义),您可以将其加倍:

LEFT JOIN MySQL.'''Additions_to_Aggregate$'''n

@BeanFrog假设这是SAS语法,就我所知,这在SAS中不起作用,这是SQL Server语法。科尔,我只是想澄清一下,你不是在pass-through(
connect-to-SQL…select*from-connection-to-SQL()
)中这样做的,而是在SAS语法环境中使用LIBNAME-connection(
MySQL
是SQL数据库的LIBNAME)是的,这是SAS语法。我编辑了我原来的帖子来展示这一点。另外,让你知道我发布了对你最初解决方案的回复。我尝试了你写的第一个解决方案。看起来SAS现在确实将其识别为一个数据表,但它似乎正在读取n作为表名的一部分。SAS返回错误:LEFT JOIN MySQLLib.'Additions_to_Aggregate$'n.data as agg错误的其余部分是什么?这就是我希望SAS能做的。错误可能是表不存在(在这种情况下,可能需要第二/第三种情况),但也可能是其他情况?这是整个错误过程sql;87创建表名\u比较为88从MySQLLib.ADV\u公文包中选择不同的a.insurated\u名称、agg.Policy\u持有人\u名称、a.段89作为90左键加入MySQLLib。'Additions\u to_Aggregate$'n作为agg 91在a.insurated\u Name=agg.Policy\u持有人\u名称上;错误:文件MYSQLLIB.Additions\u to_Aggregate$'n.DATA不存在。实际上,在查看它之后,您建议的第二种方法有效。我搞砸了,因为我加了下划线而不是空格。因为它会自动在我的表中的字段名中添加下划线,所以我认为它也会在表名中添加下划线。谢谢你的帮助!
LEFT JOIN MySQL.'''Additions_to_Aggregate$'''n