我試圖從表中選擇名爲「YEAR」的列。選擇名爲YEAR的列時出現SQL錯誤
我可以使用實現這一目標的以下內容:
SELECT * FROM OPENQUERY (mybook, 'SELECT mytable.year FROM mytable')
而不是當我用這個:
SELECT * FROM OPENQUERY (mybook, 'SELECT year FROM mytable')
這是因爲「年」是某種形式的保留字或者是有其他的原因?
我試圖從表中選擇名爲「YEAR」的列。選擇名爲YEAR的列時出現SQL錯誤
我可以使用實現這一目標的以下內容:
SELECT * FROM OPENQUERY (mybook, 'SELECT mytable.year FROM mytable')
而不是當我用這個:
SELECT * FROM OPENQUERY (mybook, 'SELECT year FROM mytable')
這是因爲「年」是某種形式的保留字或者是有其他的原因?
在SQL Server中,Year
是一個保留字。所以當你嘗試使用它時會抱怨。
如果您使用的是MySql,則可以使用大約一年的back tick(`)。
在SQL Server中,您可以使用[]
的大約year
,[year]
。
編輯
看到更新後的問題後,下面的SQL應該工作:
SELECT * FROM OPENQUERY (mybook, 'SELECT [year] FROM mytable')
我認爲你說得很對,但是你的解決方案沒有工作。我已更新查詢以顯示它是如何實際與OPENQUERY一起使用的...... – Tom 2011-03-07 16:49:56
@Tom - 您需要使用數據庫名稱/架構格式(Database.dbo.table)或使用SQL Server名稱字符這是方括號'[]' – JNK 2011-03-07 16:57:44
這是投票了這麼多??這是虛假的。 SQL Server從來沒有在沒有引號的情況下被阻止。它是保留的,但不受保護。我剛剛使用OPENQUERY進行了驗證,它的工作原理是'select year from mytable' – RichardTheKiwi 2011-03-07 20:10:54
使用
SELECT [year] FROM mytable
SELECT [year] FROM mytable
使用括號中的字段名稱
什麼SQL實現? – JNK 2011-03-07 16:40:10
SQL Server我相信... – Tom 2011-03-07 16:50:29
有兩臺服務器涉及。顯然你是從SQL Server運行的(哪個版本?) - 我們還需要知道'mybook'指向的位置(數據庫系統和版本) – RichardTheKiwi 2011-03-07 20:12:39