Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

即使使用精度和比例集也无法存储小数-SQL

即使使用精度和比例集也无法存储小数-SQL,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我发现,即使正确设置了精度和刻度,我计算的十进制结果也会达到0.00。请参阅下面的代码: create table test ( per decimal(10,2), perler varchar(1) ) insert into test(per,perler) values ('1.1','1') UPDATE test set per = (1105018/2227130) where perler ='1' select * from test 上述结果如下: per |

我发现,即使正确设置了精度和刻度,我计算的十进制结果也会达到0.00。请参阅下面的代码:

create table test
(
per decimal(10,2),
perler varchar(1)
)

insert into test(per,perler) values ('1.1','1')

UPDATE test set per = (1105018/2227130) where perler ='1'

select * from test
上述结果如下:

per   |  perler
0.00  |  1
SQLServer执行整数除法。您需要添加一个小数点以使其生效:

UPDATE test 
    SET per = (1105018.0/2227130) 
    WHERE perler = '1';
如果您想对类型学究气十足,可以显式转换为十进制:

UPDATE test 
    SET per = CONVERT(DECIMAL(10, 20), 1105018) / CONVERT(DECIMAL(10, 2), 2227130) 
    WHERE perler = '1';

但是,这通常不是必需的。

似乎是正确的。你在做整数除法。向其中一个值添加一个.0,然后看看会发生什么。@Tieson T.Wow..现在它可以工作了。是不是我必须执行强制转换?
更新测试集per=(1105018/2227130.0),其中perler='1'
应该起作用。@J.Smith您可能应该了解什么是整数除法。@TiesonT。只需铸造:铸造(1105018浮球)/铸造(2227130浮球)