Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server中的十进制/整数数据类型_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql server SQL Server中的十进制/整数数据类型

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或int的值。我需要为数据库中的列设置什么样的数据类型?

考虑到您有两种不同的值类型,使用不同的数据类型设置可为null的列可能更有利。如果表中有100-1000行,这不是问题,您可以根据需要使用大的
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)
的东西。