Sql server SQL Server中的十进制/整数数据类型
我需要输入一个可以是decimal或int的值。我需要为数据库中的列设置什么样的数据类型?考虑到您有两种不同的值类型,使用不同的数据类型设置可为null的列可能更有利。如果表中有100-1000行,这不是问题,您可以根据需要使用大的Sql server SQL Server中的十进制/整数数据类型,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我需要输入一个可以是decimal或int的值。我需要为数据库中的列设置什么样的数据类型?考虑到您有两种不同的值类型,使用不同的数据类型设置可为null的列可能更有利。如果表中有100-1000行,这不是问题,您可以根据需要使用大的DECIMAL(18,3)或甚至DECIMAL(38,10),并将所有内容转换为这种大格式。 但是,如果您访问了数十亿行,您应该记住,虽然标准INT只有4个字节大,但最小的DECIMAL是5个字节,这表示精度低于10。对于更宽的值,它可以很容易地扩展到9个字节或更多,
DECIMAL(18,3)
或甚至DECIMAL(38,10)
,并将所有内容转换为这种大格式。
但是,如果您访问了数十亿行,您应该记住,虽然标准
INT
只有4个字节大,但最小的DECIMAL
是5个字节,这表示精度低于10。对于更宽的值,它可以很容易地扩展到9个字节或更多,占用的存储空间增加了一倍以上。您使用的是哪个SQL引擎?@Radu,我使用了十进制(3,2)。但当我尝试插入值12时,它给出了错误:“Msg 8115,级别16,状态8,第2行算术溢出错误,将int转换为数据类型numeric。该语句已终止。”@MultiThreader,它是SQL 2008。请尝试十进制(4,2)。顺便问一下,您可以有多少个didgit int值?Decimal(3,2)
表示总共三位数字,其中两位位于十进制分隔符之后。因此,只能在逗号前输入一位数字。通常您会使用类似于DECIMAL(18,3)
的东西。