小数位数问题 我在数据中保存字段类型为decimal(28,9),但是经过SQL语句计算后,得到的小数位数只有6位,请问有什么方法能得到9为或者更精确的结果 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 create table #tb(num decimal(28,9))insert into #tb values(78)select * from #tb结果:-------------------------78.000000000 计算后会失去精度 楼主可以将结果转换select cast (计算结果 as decimal(28,9)) --我这可以declare @id decimal(28,9)set @id=123.123456789select @id/*---------------------------------------123.123456789(1 行受影响)*/ 其他位数都是9位小数,直接用1/3能够得到0.3333333333333的,但是用字段A/B进行计算就只能得到6位的数据(字段A和字段B的字段类型都是decimal(28,9)) declare @id decimal(28,9)set @id=123.123456789select @id*.0123/*---------------------------------------1.5144185185047(1 行受影响)*/ declare @s decimal(28,9)set @s='21.888888888'select 100.3/@s/*---------------------------------------4.58223350272415161432382341*/select cast (100.3/@s as decimal(28,9))/*---------------------------------------4.582233503*/ DECLARE @A NUMERIC(19,9),@B NUMERIC(19,9)SELECT @A=4.444444444,@B=1.000000001SELECT @A,@B,@A/@B,CAST(@A/@B AS NUMERIC(19,9))--4.444444444 1.000000001 4.4444444395555555604 4.444444440 declare @a decimal(28,9),@b decimal(28,9)set @a=123.123456789set @b=456.123456789select @a/@b/*---------------------------------------0.2699344989(1 行受影响)*/--不知道你那为啥不行 DECLARE @j decimal(28,9),@k decimal(28,9)set @j=123.456743214set @k = 456.123456789select @k/@j ---------------------------------------- 3.6946014038(所影响的行数为 1 行) 求一个简单的触发器!insert delete 一个超级简单的SQL安装问题 关于时间 请教一个sql server2000的问题 这个存储过程该怎么改?提示说有两个错误 between and的问题 [急] 用户跨database访问表的问题 怎样将日期转成字符 ?要求转成这种样子:'2002-5-8' 我用convert(char,'2002-5-8')却转成:Jul 12 2002 11:54AM ,怎么办? SQL SERVER 2000锁表问题 怎样提高在一个超过200万条记录的大表的查询速度?我已建立索引可仍耗时3分钟多。谢谢!在线等候! exists 求一SQL语句
insert into #tb values(78)
select * from #tb结果:
-------------------------
78.000000000
select cast (计算结果 as decimal(28,9))
--我这可以
declare @id decimal(28,9)
set @id=123.123456789
select @id
/*
---------------------------------------
123.123456789(1 行受影响)*/
set @id=123.123456789
select @id*.0123
/*---------------------------------------
1.5144185185047(1 行受影响)*/
set @s='21.888888888'
select 100.3/@s
/*
---------------------------------------
4.58223350272415161432382341*/
select cast (100.3/@s as decimal(28,9))
/*
---------------------------------------
4.582233503*/
DECLARE @A NUMERIC(19,9),@B NUMERIC(19,9)
SELECT @A=4.444444444,@B=1.000000001
SELECT @A,@B,@A/@B,CAST(@A/@B AS NUMERIC(19,9))--4.444444444 1.000000001 4.4444444395555555604 4.444444440
@a decimal(28,9),
@b decimal(28,9)
set @a=123.123456789
set @b=456.123456789
select @a/@b/*
---------------------------------------
0.2699344989(1 行受影响)
*/
--不知道你那为啥不行
DECLARE
@j decimal(28,9),
@k decimal(28,9)
set @j=123.456743214
set @k = 456.123456789
select @k/@j
----------------------------------------
3.6946014038(所影响的行数为 1 行)