如题,首先数据库中字段的最大精度为10,显示时显示用户设定的精度;
比如说该字段为amount,用户指定精度为3,那么我可以这么处理:
select cast(amount as decimal(18,3)) 数量 from 表x
而decimal(18,p)后面的这个p我需要动态绑定,但是p里面是不允许有sql语句的;
综上,我该在数据处理的时候(在SQL查询中)如何实现呢?
在线等啊,有没大神处理过这种问题啊,给个方案也是好的。
拼接SQL,把经度作为一个参数拼接起来。
比如:String.format("select cast(amount as decimal(18,{0}) ……)",p);
好的,我去试试。
我刚刚想了下,这个不是我要的初衷,我可能查询出来的数据中包含有多条数据,而每条数据设置的精度都是不同的,就是说这个p值是不同的;所以最好能在SQL中直接处理数据源,不要再后台代码中写。
@失落の熊熊: 一次查询结果的多条数据的同一字段精度可能不相同?怎么会呢?
如果真是这样,那也需要前天传参数的啊,要不然我们每一条数据的精度为多少。
另外,还得用union把多个结果集拼起来吧。。
@jone_e: 为什么不会呢?只要不超过这条字段的最大精度都是正确的。
@失落の熊熊: 我上一条回复的重点是后两句。当然第一句只是怀疑你的处理方式不合适。。
我是用的一个函数,在查询的时候格式化相应的数值,但是这样工作量有点大
求指教。
@失落の熊熊:
select dbo.Format(colName,@Precise) as colname
@清海扬波: 这也太抽象了吧,你好歹把dbo.Format这个函数内容给我看下撒 。。