2014-07-25 51 views
2

我正在嘗試使用Proc Sql查詢名爲的SQL Server數據庫中的表Code_07-12_dim。 SAS解釋一個連字符作爲一些其他的意思,和下面的代碼返回一個錯誤:如何通過名爲連字符的SAS libname引用SQL Server表

proc sql; 
SELECT * FROM lib1.Code_07-12_dim; 
quit; 

日誌輸出:

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 

我怎麼可以參考這個表?請注意,SQL服務器由另一個部門管理,雖然我打算在他們的表名中使用連字符,但我無法更改表的名稱。

+0

我覺得這個回答你的問題 http://stackoverflow.com/questions/3168644/can-a-table-field-contain-a-hyphen –

+0

@double_j這是一個特定的SAS-問題。簡單地將表格名稱換成引號不起作用。我將問題標題更改爲更具體。 – Patrick

+1

@Patrick在標題中加入「SAS」是不正確的;這就是標籤的含義(儘管有些人似乎無法閱讀)。我編輯了一個允許的折中標題(SAS在中間沒問題,只是沒有像那樣開始)。 – Joe

回答

6

您應該能夠使用:

proc sql; 
SELECT * FROM lib1.'Code_07-12_dim'n; 
quit; 

這就是所謂的「名稱直譯」,是SAS的版本通常在其他地方使用的方括號。

您可能還需要選項options validmemname=any;

+0

這很完美。謝謝! – Patrick