2012-06-28 110 views
8

這實際上並不是我面臨的問題。但我只是想知道,下面編寫的代碼中的第一行 應該被SQL Server視爲語法錯誤,因爲列列表末尾有額外的逗號(,)。但它運行的代碼很好。有誰知道原因?爲什麼SQL Server不會將此代碼視爲不穩定?

CREATE TABLE #TEMP(COL1 INT,COL2 VARCHAR,)  
INSERT INTO #TEMP VALUES (1,'A')  
SELECT * FROM #TEMP  
DROP TABLE #TEMP 
+0

我認爲這是一個設計當您不必忽略逗號時,決定緩動動態sql。類似於LINQ爲什麼在C#中允許使用這種匿名類型:'new {a = 1,b = 2,c = 3,}'。 –

+6

不應被[語法](http://msdn.microsoft.com/en-us/library/ms174979.aspx)允許,但[主要無害](https://connect.microsoft.com/SQLServer/ feedback/details/273348/trailing-comma-allowed-in-create-table) –

+1

@Martin Smith:這取決於,如果圖中的n包含0或不包含0。該語法不包含任何定義(至少沒有找到)。 – Stefan

回答

1

它應該被標記爲語法錯誤,但是SQL Server中存在一個錯誤,不會將尾隨逗號視爲語法錯誤。

來源:Microsoft Support(受影響的版本列表 - 6,6.5,和2000 - 都老了,但我想這是仍然存在,因爲它只是在2008年的工作對我來說)

相關問題