2012-06-05 71 views
4

聲明這些變量的什麼是錯的,我有以下代碼:我不能確定我在SQL

USE pricingdb 
go 

CREATE TABLE dbo.Events_060107_2012 
(
    Date_Time varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
    Event_Type TEXT, 
    Month_of_Year TEXT, 
    Survey DOUBLE, 
    Actual DOUBLE, 
    Prior_Data DOUBLE, 
    Revised DOUBLE, 
    Relevance FLOAT, 
    Ticker TEXT 
); 

轉到

而且我得到一個錯誤:

"Incorrect syntax near ','. Level 15, State 1, Line 6" 

我我意識到這應該是一個很容易解決的問題,但無論出於何種原因,我在理解如何解決這個問題方面遇到了很多麻煩。我對SQL的瞭解最多是初學者,所以我閱讀的大部分其他線索都略高於我的頭腦。

在此先感謝您的幫助。

回答

13

DOUBLE是不是在SQL Server中的數據類型有效

使用float,數字,......或任何受支持的其他類型的。在http://msdn.microsoft.com/en-us/library/ms187752.aspx

+2

順便說一句,而文字是有效的它(已廢棄)(http://msdn.microsoft.com/en-us/library/ms187993.aspx) –

+0

使用小數或數字並指定位置。浮動是一個不準確的數字,可能會導致舍入問題,應該避免。 – HLGEM

+0

請使用varchar(max)或nvarchar(Max)代替文本。 – HLGEM

0

使用浮動,而不是雙(或十進制)

更多信息

USE pricingdb 
go 

CREATE TABLE dbo.Events_060107_2012 
(
Date_Time varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
Event_Type TEXT, 
Month_of_Year TEXT, 
Survey FLOAT, 
Actual FLOAT, 
Prior_Data FLOAT, 
Revised FLOAT, 
Relevance FLOAT, 
Ticker TEXT 
); 
0

兩個問題。首先是沒有雙數據類型。第二個是float需要一個大小來表示精度的差異。等效創建查詢上面的一個是:

CREATE TABLE dbo.Events_060107_2012 
(
    Date_Time varchar(20) COLLATE SQL_Latin1_General_CP1_CI_AS NULL, 
    Event_Type TEXT, 
    Month_of_Year TEXT, 
    Survey FLOAT(53), 
    Actual FLOAT(53), 
    Prior_Data FLOAT(53), 
    Revised FLOAT(53), 
    Relevance FLOAT(24), 
    Ticker TEXT 
); 
+0

對Buckley的回答沒有任何價值。無論如何,沒有大小的FLOAT被視爲FLOAT(53)。唯一支持的其他精度是'float(24)',可以使用同義詞'REAL'。不知道爲什麼你決定將'相關性'從'float'改爲'real'。 –