2012-03-28 51 views
2

我在這個簡單的sql上出現了一個厭惡的錯誤,我無法發現錯誤,任何幫助都會被滿足。SQL Server Express - 不正確的語法附近','

CREATE TABLE alertitem 
    ([id] INT, 
    [dateposted] DATETIME, 
    [daterevised] DATETIME, 
    [datestart] DATETIME, 
    [dateexpires] DATETIME, 
    [userid] INT, 
    [title] VARCHAR(MAX), 
    [details] VARCHAR(MAX), 
    [lat] DOUBLE, 
    [lon] DOUBLE, 
    [radius] INT, 
    [imageid] INT); 
+1

[什麼代表在SQL Server中的雙重?](http://stackoverflow.com/questions/1209181/what-represents-a-double-in-sql-server) – 2012-03-28 21:17:33

回答

8

Double不是SQL Server數據類型。

這應該是所有數據類型的完整列表,請參閱MSDN

我應該注意到,你可能會想用FLOAT或DECIMAL來解決你的問題,但是我對你正在做的其他事情(生產者或消費者)一無所知,所以我會讓你選擇哪種數據類型可以解決你的問題。

+0

它的工作,謝謝,我使用與使用DOUBLE作爲數據類型的MySQL相同的語法。 – user1279144 2012-03-28 21:29:32

+0

如果這回答您的問題,請將此標記爲已接受的答案。 – deutschZuid 2012-03-30 01:53:40

6

將DOUBLE更改爲FLOAT以解決您的問題。

3

使用十進制(9,2),或者你需要,而不是DOUBLE

1

你只是需要刪除DOUBLE,因爲它不是一個支持的數據類型的精度。我還reccomend組織你的查詢更容易閱讀的方式,如:

CREATE TABLE alertitem (
    [id] INT, 
    [dateposted] DATETIME, 
    [daterevised] DATETIME, 
    [datestart] DATETIME, 
    [dateexpires] DATETIME, 
    [userid] INT, 
    [title] VARCHAR(MAX), 
    [details] VARCHAR(MAX), 
    [lat] FLOAT, 
    [lon] FLOAT, 
    [radius] INT, 
    [imageid] INT); 

你會發現很容易解決的bug這種方式。