列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上不允许我旗萎靡不振,但让我编辑的问题,而不是,那么:
这个问题不重复,以这一个 。 现有的问题是对“浮动”数据类型而这一次的“钱”,转换“钱”为“VARCHAR”像“现有雁”永远返回相同的小数位数,因此它不会回答这个题。
你可以(independantly从区域设置):
- 乘以10000值
-
convert
结果为整数 -
convert
整数为字符串 - 加4个前导零到左侧(以防万一......)
- 采取从4个字符
right
(前位小数) -
replace
由一个空白字符的每个零 - 使用删除尾随空白
rtrim
- 返回剩余的字符串的长度
为了把这个表达式,这将是:
LEN(RTRIM(REPLACE(RIGHT('0000' + CONVERT(varchar(20), CONVERT(int, CostPrice*10000)), 4), '0', ' ')))
尝试这个
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