
如何让SQLServer数据保留三位小数
类型为Varchar(50),类型不变的情况下,将数据小数大于3位的变为三位小数,如果小数不到3位的不变,如13.33333成为13.333,而12.1不变,不让12.1...
类型为Varchar(50),类型不变的情况下,将数据小数大于3位的变为三位小数,如果小数不到3位的不变,如13.33333 成为13.333,而12.1不变,不让12.1变成12.100。求大神指教。
展开
3个回答
展开全部
写个函数就行了 很简单 主题代码如下 可在sqlserver 直接运行
declare @aaa varchar(50)='3213.434'
if (substring(@aaa ,charindex('.',@aaa)+1,LEN(@aaa)-charindex('.',@aaa)-1) >3)
begin
print cast( cast(@aaa as numeric(18,3)) as varchar(50))
end
else
print @aaa
直接运行看打印的结果, 这里是直接截取 如果要四舍五入 用round 函数。 改成函数应该不用我说了吧 加个壳 把 print 改成 return 返回出去
declare @aaa varchar(50)='3213.434'
if (substring(@aaa ,charindex('.',@aaa)+1,LEN(@aaa)-charindex('.',@aaa)-1) >3)
begin
print cast( cast(@aaa as numeric(18,3)) as varchar(50))
end
else
print @aaa
直接运行看打印的结果, 这里是直接截取 如果要四舍五入 用round 函数。 改成函数应该不用我说了吧 加个壳 把 print 改成 return 返回出去
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
确实如ls所说,这种需求一般在程序语言中实现并插入数据库,如果实在想做的话需要写触发器来验证及修改录入的数据格式,而且还可能要将数据类型转换几次
追问
我就是看有方便的方法没有,看来希望渺茫~
追答
是的,要不你就直接把数据类型改成decimal(10,3)那么录入的时候就直接取小数3位了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个在数据库里面实现比较麻烦,最好在代码层面实现比较容易些
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询