Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.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_Casting_Integer_Decimal - Fatal编程技术网

Sql server 为什么可以';在十进制字段中输入一个整数值?

Sql server 为什么可以';在十进制字段中输入一个整数值?,sql-server,casting,integer,decimal,Sql Server,Casting,Integer,Decimal,我正在尝试为SQL Server表编写一个insert语句,将值1插入到十进制字段中。该字段是decimal(10,10)类型,据我所知,这意味着它最多可以有10个数字,其中最多有10个数字可以位于小数点之后。但是,当我尝试运行insert语句时,出现以下错误: Arithmetic overflow error converting int to data type numeric. 如果我将字段的数据类型更改为decimal(11,10),它会突然起作用。我在这里不明白什么?我做错了什么?

我正在尝试为SQL Server表编写一个insert语句,将值1插入到十进制字段中。该字段是decimal(10,10)类型,据我所知,这意味着它最多可以有10个数字,其中最多有10个数字可以位于小数点之后。但是,当我尝试运行insert语句时,出现以下错误:

Arithmetic overflow error converting int to data type numeric.
如果我将字段的数据类型更改为decimal(11,10),它会突然起作用。我在这里不明白什么?我做错了什么?

十进制(10,10)
表示所有小数点,小数点左边没有数字

请看这里:

十进制[(p[,s])]

p(精度)指定小数位数的最大总数 可以存储在左侧和右侧 小数点的右边。 精度必须是介于1之间的值 通过最大精度。这个 最大精度为38。默认值 精度为18

s(刻度)指定可以输入的最大小数位数 存储在小数点右边 指向比例必须是0到0之间的值 通过p。只能指定比例 如果指定了精度。默认值 标度为0;因此,0
decimal(10,10)
表示所有小数点,小数点左侧没有数字

请看这里:

十进制[(p[,s])]

p(精度)指定小数位数的最大总数 可以存储在左侧和右侧 小数点的右边。 精度必须是介于1之间的值 通过最大精度。这个 最大精度为38。默认值 精度为18

s(刻度)指定可以输入的最大小数位数 存储在小数点右边 指向比例必须是0到0之间的值 通过p。只能指定比例 如果指定了精度。默认值
标度为0;因此,我仍然感到困惑。它说小数位数是“小数点右边可以存储的最大小数位数”——不是说必须有10位。是的,但这并不意味着它是滑动小数点。这意味着,如果您在右边提供的数字少于10位,那么其余的都是零。@Joe,我不确定您到底想说什么,但是如果您运行
declare@x decimal(5,2);设置@x=1.123456789;选择@x;设置@x=1;选择@x
您将获得
1.12
1.00
。声明小数点后,小数点左右的位数是固定的,小数点不会滑动。@froadie,如果要在值中包含10个整数位数和10个小数位数:
1234567891.1234567891
,请使用
decimal(20,10)
@KM,我正在回复froadie的评论,不是你的帖子,我还是很困惑。它说小数位数是“小数点右边可以存储的最大小数位数”——不是说必须有10位。是的,但这并不意味着它是滑动小数点。这意味着,如果您在右边提供的数字少于10位,那么其余的都是零。@Joe,我不确定您到底想说什么,但是如果您运行
declare@x decimal(5,2);设置@x=1.123456789;选择@x;设置@x=1;选择@x
您将获得
1.12
1.00
。声明小数点后,小数点左右的位数是固定的,小数点不会滑动。@froadie,如果要在值中包含10个整数位数和10个小数位数:
1234567891.1234567891
,请使用
decimal(20,10)
@KM,我正在回复froadie的评论,不是我加1的你的帖子。
DECIMAL(10,5)=     12345.12345
DECIMAL(10,2)=  12345678.12
DECIMAL(10,10)=         .1234567891
DECIMAL(11,10)=        1.1234567891