Datatypes

根據 SQL92 規範,我可以將值 1 儲存在精度 = 比例的欄位中嗎?

  • October 29, 2018

將數字 1 儲存在定義為的欄位中是否符合 SQL92 NUMERIC 3,3

怎麼樣DECIMAL 3,3

這是否意味著精度是浮動小數位或靜態必須有 3 個小數位,即使它們都為零?

精度是可以儲存在小數點兩側的小數位數的總數。小數位數是小數點右邊的小數位數的總數,可以小於或等於精度。因此,可以儲存在 DECIMAL(3,3) 或 NUMERIC(3,3) 中的最大值為 0.999。找出這一點的最簡單方法是實際嘗試一下。

使用 mysql 5.5.20 以下返回 0.999:

SET @val = (SELECT CAST(1 AS DECIMAL(3,3)));
SELECT @val; 

而以下返回 1:

SET @val = (SELECT CAST(1 AS DECIMAL(3,0)));
SELECT @val;

我希望這有幫助。

**編輯:**我忘了提到在大多數平台上嘗試執行上述操作會導致某種類型的算術溢出異常。例如,在 Microsoft SQL Server 2008 上執行的以下語句將引發錯誤:

DECLARE @val DECIMAL(3,3);
SET @val = 1;
SELECT @val;

引用自:https://dba.stackexchange.com/questions/22027