Sql server SQL Server中的Int 10

Sql server SQL Server中的Int 10,sql-server,int,Sql Server,Int,据我所知,SQL Server中的int会自动设置为4位数的长度。bigint的默认长度为8。似乎这些不能被设置为任何其他长度,那么当您想要一个只包含数字的列并且需要它的长度为10时,您会怎么做 我已经尝试过浮点运算,虽然它将存储10位数字,但它是以科学记数法存储的。int需要4个字节(-2^31到2^31-1),而bitint需要8个字节(-2^64到2^64-1)。它们分别是32位和64位有符号整数 请参阅 此外,除非您真的需要它们,否则您应该避免使用float和real,因为它们是近似的数

据我所知,SQL Server中的int会自动设置为4位数的长度。bigint的默认长度为8。似乎这些不能被设置为任何其他长度,那么当您想要一个只包含数字的列并且需要它的长度为10时,您会怎么做

我已经尝试过浮点运算,虽然它将存储10位数字,但它是以科学记数法存储的。

int
需要4个字节(-2^31到2^31-1),而
bitint
需要8个字节(-2^64到2^64-1)。它们分别是32位和64位有符号整数

请参阅

此外,除非您真的需要它们,否则您应该避免使用
float
real
,因为它们是近似的数字类型<十进制值首选代码>十进制或
数字

如果您想要与“INT(10)”等效,那么应该使用
十进制(10)
,它将支持-9999999999到9999999999。请记住,这将使用比
bigint
(9字节)更多的磁盘空间,并且在非常大的范围内可能会有不同的性能。

int
需要4个字节(-2^31到2^31-1),而
bitint
需要8个字节(-2^64到2^64-1)。它们分别是32位和64位有符号整数

请参阅

此外,除非您真的需要它们,否则您应该避免使用
float
real
,因为它们是近似的数字类型<十进制值首选代码>十进制或
数字


如果您想要与“INT(10)”等效,那么应该使用
十进制(10)
,它将支持-9999999999到9999999999。请记住,这将使用比bigint(9字节)更多的磁盘空间,并且在非常大的范围内可能会执行不同的操作。

您使用的是哪个版本的sql server。我正在使用sql server 2014。其中有一个数据类型decimal。它做你想要的。如果在您的sql server中可用,请尝试使用。

您使用的是哪个版本的sql server。我正在使用sql server 2014。其中有一个数据类型decimal。它做你想要的。如果您的sql server中有可用的数字,请尝试使用。

您将人类可读数字(常用数字)的概念与其数字表示(位)相混合

需要4个字节(32位)的
INT
的结尾不是“9999”。。。有4.294.967.295个不同的值可能与一个int

从我的其他评论来看,你想储存电话号码

将此作为一般规则:将值存储在数值字段中,您希望在数学计算中使用这些值

你会认为电话号码+2或电话号码除以4有任何意义吗

无论如何:电话号码通常是用某种分隔符存储的


把这一切放在一起,你就会得出结论:没有十进制(10),没有整数,没有BIGINT,只有VARCHAR(50):-)

你把人类可读数字(普通数字)的概念与其数字表示(位)混在一起了

需要4个字节(32位)的
INT
的结尾不是“9999”。。。有4.294.967.295个不同的值可能与一个int

从我的其他评论来看,你想储存电话号码

将此作为一般规则:将值存储在数值字段中,您希望在数学计算中使用这些值

你会认为电话号码+2或电话号码除以4有任何意义吗

无论如何:电话号码通常是用某种分隔符存储的


综上所述,你会得出结论:没有十进制(10),没有整数,没有BIGINT,只有VARCHAR(50):-)

“科学记数法”不是
float
数据类型的属性。这是一种在屏幕上显示的方式。此外,您似乎混淆了存储二进制值所需的字节数及其文本表示的位数。实际上,这就是我的想法。它最多应该有十位数字。但当我尝试添加数字时,出现算术溢出错误。@MarcelMarino 4[signed]字节被限制为2147483647。不能用32位数字存储所有10位的10进制值。“科学记数法”不是
float
数据类型的属性。这是一种在屏幕上显示的方式。此外,您似乎混淆了存储二进制值所需的字节数及其文本表示的位数。实际上,这就是我的想法。它最多应该有十位数字。但当我尝试添加数字时,出现算术溢出错误。@MarcelMarino 4[signed]字节被限制为2147483647。你不能用一个32位的数字来存储所有10位的基数值。我只是在添加一个10位的电话号码。4个字节应该包含10位数字,但当我尝试添加电话号码时,出现算术溢出错误。@MarcelMarino您应该使用varchar作为电话号码。你不会用不同的电话号码来做数学运算。那自动递增的主键呢?还用varchar吗?这个数据库可以很容易地得到7位数的记录。@MarcelMarino如果您认为32位对于您的标识列不够,请使用
bigint
。您将不会用完64位数字。@MarcelMarino您不能自动递增varchar。我只是添加一个10位电话号码。4个字节应该包含10位数字,但当我尝试添加电话号码时,出现算术溢出错误。@MarcelMarino您应该使用varchar作为电话号码。你不会用不同的电话号码来做数学运算。那自动递增的主键呢?还用varchar吗?这个数据库可以很容易地得到7位数的记录。@MarcelMarino如果您认为32位对于您的标识列不够,请使用
bigint
。您不会用完64位数字。@MarcelMarino您不能自动递增varchar。