首页 新闻 会员 周边 捐助

SQL查询动态指定小数点后面的位数

0
悬赏园豆:5 [已解决问题] 解决于 2013-05-17 09:07

如题,首先数据库中字段的最大精度为10,显示时显示用户设定的精度;

比如说该字段为amount,用户指定精度为3,那么我可以这么处理:

select cast(amount as decimal(18,3)) 数量 from 表x

而decimal(18,p)后面的这个p我需要动态绑定,但是p里面是不允许有sql语句的;

综上,我该在数据处理的时候(在SQL查询中)如何实现呢?

问题补充:

在线等啊,有没大神处理过这种问题啊,给个方案也是好的。

失落の熊熊的主页 失落の熊熊 | 初学一级 | 园豆:79
提问于:2013-01-17 09:02
< >
分享
最佳答案
0

拼接SQL,把经度作为一个参数拼接起来。

比如:String.format("select cast(amount as decimal(18,{0}) ……)",p);

收获园豆:5
jone_e | 小虾三级 |园豆:1410 | 2013-01-17 09:24

好的,我去试试。

失落の熊熊 | 园豆:79 (初学一级) | 2013-01-17 09:26

我刚刚想了下,这个不是我要的初衷,我可能查询出来的数据中包含有多条数据,而每条数据设置的精度都是不同的,就是说这个p值是不同的;所以最好能在SQL中直接处理数据源,不要再后台代码中写。

失落の熊熊 | 园豆:79 (初学一级) | 2013-01-17 09:44

@失落の熊熊: 一次查询结果的多条数据的同一字段精度可能不相同?怎么会呢?

如果真是这样,那也需要前天传参数的啊,要不然我们每一条数据的精度为多少。

另外,还得用union把多个结果集拼起来吧。。

jone_e | 园豆:1410 (小虾三级) | 2013-01-17 10:34

@jone_e: 为什么不会呢?只要不超过这条字段的最大精度都是正确的。

失落の熊熊 | 园豆:79 (初学一级) | 2013-01-17 11:40

@失落の熊熊: 我上一条回复的重点是后两句。当然第一句只是怀疑你的处理方式不合适。。

jone_e | 园豆:1410 (小虾三级) | 2013-01-17 12:15
其他回答(2)
0
chenping2008 | 园豆:9836 (大侠五级) | 2013-01-17 09:30
0

我是用的一个函数,在查询的时候格式化相应的数值,但是这样工作量有点大

清海扬波 | 园豆:825 (小虾三级) | 2013-01-17 10:39

求指教。

支持(0) 反对(0) 失落の熊熊 | 园豆:79 (初学一级) | 2013-01-17 10:39

@失落の熊熊: 

select dbo.Format(colName,@Precise) as colname

支持(0) 反对(0) 清海扬波 | 园豆:825 (小虾三级) | 2013-01-17 11:56

@清海扬波: 这也太抽象了吧,你好歹把dbo.Format这个函数内容给我看下撒 。。

支持(0) 反对(0) 失落の熊熊 | 园豆:79 (初学一级) | 2013-01-17 12:11
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册