2013-03-07 197 views
2

我正在爲學校的數據庫作業工作。由於缺乏睡眠,我現在無法思考,但我知道這是一個簡單的問題。Access中貨幣值的數據類型

我有這個創建表語句,在它,我應該有3列cusNo,addbalance,我可以做得很好。但我的問題在於最後一欄。最後一列是爲了平衡,應該有一個5位數的數值。要做到這一點,當我創建平衡列時,我是否必須將其創建爲雙精度?

事情是這樣的:

CREATE TABLE tablename 
(
    cusNo char(3), 
    add varchar(20), 
    balance double 
) 
+1

您使用的是哪種數據庫平臺? – 2013-03-07 17:11:01

+0

@你的意思是DECIMAL?我如何將32.75美元存儲爲INT?乘以100,並且每次我想要使用該值時都要劃分? – 2013-03-07 17:16:02

+1

@AndyLester等。什麼????辦公室空間,「給一分錢,拿一分錢。」? – swasheck 2013-03-07 17:16:28

回答

3

你通常不使用雙/浮動貨幣(對不起,不只是「正常」,但你永遠不應當將它保存非精確的類型)。取決於您使用的RMDS,您可以選擇一種或另一種精確的數字類型。 money - SQL Server中,decimal - MySQL的,NUMBER - 甲骨文

更新
我忘了提及,SQL Server還具有decimal類型,你可以(而且很多人)更喜歡money

+3

我會更進一步,並說你應該在SQL Server中使用'DECIMAL(xx,xx)'。我遇到了溢出MONEY類型的問題,並傾向於選擇'DECIMAL'。 – swasheck 2013-03-07 17:26:16

+0

謝謝,我同意......在使用DECIMAL時添加 – a1ex07 2013-03-07 17:27:30

+0

,括號內的數字意味着什麼。第一個數字是否意味着您只能有x個數字並在小數點後面顯示x個地方的數量? – user2145290 2013-03-07 18:16:31

0

我會嘗試:

CREATE TABLE tablename (cusNo INT(3), add MONEY(5), balance MONEY(5)) 

假設你想添加總計相互MONEY數據類型是你想要的這裏(和你將SQL服務器上)。

+1

像@swasheck一樣,我不同意MONEY在這裏(或永遠)是正確的選擇。 – 2013-03-07 17:27:04

+0

對於學校項目中的一個ddl,學生可以學習限制,但是我不會在我的職業生涯中使用它。 – sisoo 2013-03-07 17:33:03

7

SQL Server中沒有DOUBLE

而且我會主張DECIMAL高於MONEYMONEYknown accuracy issues,very rarely wins the performance race,並且在您可以存儲的內容方面非常不靈活。用DECIMAL可以自由選擇比例和精度。

+0

哦,好的。我在考慮java,C++和double。 oops – user2145290 2013-03-07 18:15:06

+0

@ user2145290,請勿在您的應用程序代碼中使用基本2浮點數來表示金錢。最好的解決方案是使用任意精度的浮點庫。 – 2013-03-08 02:26:49

2

使用十進制來平衡。通常情況下,最多兩位小數可以正常工作,但您可以根據需要進行更改。 所以,你應該使用:

CREATE TABLE tablename 
(
    cusNo char(3), 
    address varchar(20), 
    balance NUMERIC(7,2) 
) 
+0

當我使用小數,說我有語法錯誤 – user2145290 2013-03-07 18:19:42

+0

編輯答案。其實,添加是保留關鍵字,所以請使用地址或任何其他名稱。 – 2013-03-07 18:22:48

+0

是的,即使改變後,我仍然得到相同的消息說,在字段定義中存在語法錯誤,並突出顯示單詞十進制 – user2145290 2013-03-07 18:26:05

0

在Microsoft Access使用Currency數據類型的美元金額。在SQL Server中,使用DECIMALMONEY

+0

甚至試圖貨幣仍然沒有成功 – user2145290 2013-03-07 20:11:50

+0

補充的是,你需要使用一個保留字[添加] ,或更好地使用不同的名稱。 – 2013-03-07 20:13:56

+0

我改變了添加到解決,仍然遇到了同樣的問題 – user2145290 2013-03-07 20:23:25

相關問題