首页 > 解决方案 > SQL Server 如何获取货币类型的小数位数?

问题描述

CostPrice表格的列t1是货币类型。

列中的数据CostPrice如下:

141.1938
0.00
147.1041
119.592
1.23

我使用这个 sql 来获取十进制数字:

select distinct len(CostPrice-floor(CostPrice))-2 from t1;

但是结果只有2,这是不对的,实际上结果应该是2,3,4。

那么如何修复sql呢?

添加:

StackOverflow 不允许我标记标记,而是要求我编辑问题,所以:

此问题与此问题不重复。现有问题是关于“float”数据类型,而这个问题是关于“money”,像“existing anser”一样将“money”转换为“varchar”将始终返回相同的小数位数,所以它不回答这个问题问题。

标签: sql-serversql-server-2008

解决方案


尝试这个

DECLARE 
@money money = 141.1938

 SELECT 
    @money
   ,SUBSTRING(CONVERT(varchar(20),@money,2), CHARINDEX('.', CONVERT(varchar(20),@money,2)) + 1, LEN(CONVERT(varchar(20),@money,2))) as RESULT 

推荐阅读