2016-02-01 38 views
0

我試圖從內部stata,通過ODBC執行sql查詢。一些列名稱中有空格。Stata odbc查詢與列名稱中的空格

Stata希望用下劃線替換空格,這不起作用。如果我試圖逃避空間,逃脫引用列名稱,其中沒有一個似乎工作。

在下面的示例中,列名稱是「程序類型代碼」。

odbc load, exec("SELECT ReportEffectiveDate, Program_Type_Code, CWIN FROM 
McDreamIndvReport WHERE ReportEffectiveDate > '20140701' and  
ReportEffectiveDate<'20150801'") dsn("HSAReports") 

其他STATA ODBC命令似乎讓你引用的表或列在他們的空間,但預計EXEC帶引號的字符串和轉義引號(\「程序類型代碼\」)是行不通的。

有什麼建議嗎?

謝謝!

+0

空間是在Stata變量名非法所以它會自動用下劃線代替空格。在使用'odbc load,exec'將表讀入Stata中的方法中,您可以嘗試在列名稱周圍添加方括號('['和']') – ander2ed

+0

是的,括號運行良好 - 正是我所期待的,謝謝!如果您將它寫爲答案,我可以將其標記爲已接受。 –

回答

1

空間是在Stata變量名非法所以那些會用下劃線當你從無論一個ODBC連接數據讀取代替,但如果ODBC源表中有空格的列名來讀取數據,就可以用空格添加方括號([])。

在您的例子,這將是:

#delimit ; 
odbc load, exec("SELECT ReportEffectiveDate, [Program Type Code], CWIN 
    FROM McDreamIndvReport 
    WHERE ReportEffectiveDate > '20140701' and ReportEffectiveDate<'20150801'") 
dsn("HSAReports");