SQL取出的数据要转换成小数 SQLServer里的数据时小数的但是用c#double类型取出的数据就是整数的,如何解决

SQL取出的数据要转换成小数 SQLServer里的数据时小数的但是用c#double类型取出的数据就是整数的,如何解决,第1张

恩,从数据库里取出的值,如果做了乘或除是会变成整数的,在你的SQL语句中不妨做一下处理,就是把你查出的结果用round()这个方法处理一遍,或str()处理,这两个方法是在sql语句中写的,具体用法,你可以查一下,网上有很多。

先检查金额列的数据是否都符合小数规范,转为数字格式只有是数字的字符串才能转,如000012转为12,55转为055,若是个英文符号等字符转了就报无效数字类型的错。

转换的方式很多,但是字符串转换成数字的前提是字符串中只包含了数字或者小数点。

可使用convert函数,cast 和convert可以显式转换数据类型,在某些情况下SQL会根据实际情况自动转换!不过建议显式的转换一下,这样的话可读性高一点!

因为字符串不一定能转换成数字,所以用上面的,加上错误处理比较。

例子:

declare @a varchar(10)

set @a='as23'

select case when isnumeric(@a)=1 then cast(@a as int) else null end

set @a='23'

select case when isnumeric(@a)=1 then cast(@a as int) else null end

结果:

declare @a varchar(10)

set @a='as23'

select case when isnumeric(@a)=1 then cast(@a as int) else null end

set @a='23'

select case when isnumeric(@a)=1 then cast(@a as int) else null end

先检查金额列的数据是否都符合小数规范

cast(金额
as
decimal(10,4))>500
或者
convert(decimal(10,4),金额)>500
试试
decimal的长度和小数位数根据自己需要设定

(1)什么数据库?现在的页面看不出来是什么数据库。
(2)现在该字段的数据类型是什么?
我的猜测:我看这些0很整齐,小数点后面0的位数是一样的,也就是说明这个0是自动补的,我也查了前面你的那个类似字段,也是小数点后14位(算上小数点后不是0的数字),那么也就是说个人觉得你的数据类型应该mysql的decimal类型,因为个人所知的数据库中只有这个(据说DB2上也有这个,不过我没用过不知道)。
也就是说你的数据类型是decimal(xx,14),那么就会出现这个情况,你可以用alter修改该字段的字段类型,update只能修改字段的值,是没办法修改字段的字段类型的。而且因为decimal(xx,14)这个字段属性的关系,不管你怎么update,最终都是这种情况。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13353738.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-20
下一篇 2023-07-20

发表评论

登录后才能评论

评论列表(0条)

保存