为什么SQL Server中的长度列有点令人困惑?

时间:2012-07-09 15:57:47

标签: sql-server

所以我发现长度列表示"长度"是4,精度是10:

Col. name: SurveyNumber
type : int
computed: no
Length: 4
Precision: 10   

它的数字如19350。为什么长度称为4并且它有5位数字:?

4 个答案:

答案 0 :(得分:3)

4个字节!

它不是4位数。

4字节= 4 * 8 = 32位。

所以它可以保存2 ^ 32-1值数

(如果你有一个负数,那么它的半值 - symetric(-1)为零。 - 因为零也会计数。)

  

min = -2,147,483,648 max = 2,147,483,647

2^32 = 4294967296

divide by 2: = 2147483648

now step up 2^32-1 times

so you are here at : 2,147,483,647

答案 1 :(得分:3)

int的长度为4,因为它需要4个字节(32位)来存储值。

4个字节可以存储-2,147,483,648到2,147,483,647的数字,因此可以存储10位精度。

答案 2 :(得分:3)

MSDN上提供了所有信息。

Precision, Scale, and Length (Transact-SQL)

  

精确度是数字中的位数。 Scale是数字中小数点右边的位数。例如,数字123.45的精度为5,标度为2。

     数字数据类型的

长度是用于的字节数   存储号码。字符串或Unicode数据类型的长度   是字符数。 binary,varbinary和的长度   图像数据类型是字节数。例如,一个int数据类型   可以容纳10位数,存储在4个字节

答案 3 :(得分:1)

检查MySQL文档,这里很清楚:Integer Types (Exact Value)

4字节存储(长度为4)表示最多2 ^ 32个值。