精度、小數位數和長度(SQLSERVER)----

 

精度是數中的數字個數。小數位數是數中小數點右邊的數字個數。例如,數 123.45 的精度是 5,小數位數是2。

numericdecimal 數據類型默認的最大精度是 38。在 SQL Server 早期版本中,默認的最大值是 28。

數字數據類型的長度是存儲此數所佔用的字節數。字符串或 Unicode 數據類型的長度是字符個數。binary、varbinary、image 數據類型的長度是字節數。例如,int 數據類型可以有 10 位數,用 4 個字節存儲,不接受小數點。int 數據類型的精度是 10,長度是 4,小數位數是 0。

當兩個 char、varchar、binary varbinary 表達式串聯時,結果表達式的長度是這兩個源表達式長度之和,或是 8,000 字符,以二者中少者計。

當兩個 ncharnvarchar 表達式串聯時,結果表達式的長度是兩個源表達式長度之和,或是 4,000 字符,以二者中少者計。

除了 decimal 類型之外,數字數據類型的精度和小數位數是固定的。如果算術運算符有兩個相同類型的表達式,結果就爲該數據類型,並且有對此類型定義的精度和小數位數。如果運算符有兩個不同數字數據類型的表達式,數據類型優先規則決定結果的數據類型。結果爲該數據類型定義的精度和小數位數。

下表定義了當運算的結果是 decimal 類型時,結果的精度和小數位數是如何計算的。當以下情況時,結果是 decimal 類型:

  1. 兩個表達式是 decimal 類型。
  2. 一個表達式是 decimal 類型,而另一個是比 decimal 優先順序低的數據類型。

操作數表達式由表達式 e1(精度爲 p1,小數位數爲 s1)和表達式 e2(精度爲 p2,小數位數爲 s2)來表示。非 decimal 類型的表達式的精度和小數位數,是對此表達式數據類型定義的精度和小數位數。

操作結果精度結果小數位數 *
e1 + e2 max(s1, s2) + max(p1-s1, p2-s2) + 1 max(s1, s2)
e1 - e2 max(s1, s2) + max(p1-s1, p2-s2) max(s1, s2)
e1 * e2 p1 + p2 + 1 s1 + s2
e1 / e2 p1 - s1 + s2 + max(6, s1 + p2 + 1) max(6, s1 + p2 + 1)

* 結果精度和小數位數有絕對最大值 38。當結果精度大於 38 時,相應的小數位數會減少,以避免結果的整數部分被截斷。

發佈了17 篇原創文章 · 獲贊 30 · 訪問量 22萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章