我想知道一个数字中有多少个实际使用的小数位.
例如,如果我有0.604,它将是2个十进制,如果我有0.64,它将是3个十进制. 但如果我搜索第一个零,它会得到6到4之间的0.我试着用Right从右0开始搜索,但没有奏效.
为什么会这样?因为我需要知道我需要乘以小数的多少才能得到一个整数,但同时我需要知道这个0的数字,所以我放在了另一个字段中.
例如,如果我得到0.64,我将乘以100,所以我将在一个域中得到64,在另一个域中得到100. 如果我有0.604,我将乘以1000,所以我将在一个领域有604,在另一个领域有1000.
我正在从旧的ERP迁移到SAP.
我正在try 的指令
declare @val decimal(10,6),
@var varchar(50),
@point int,
@zero int,
@calc int,
@UMREZ int,
@UMREN int
set @val = 0.604
set @var = trim(str(@val, 10, 10))
set @point = cast(CHARINDEX('.', @var) as int)
set @zero = cast(right(CHARINDEX('0', @var, @point), 8) as int)
set @calc = @zero - @point - 1
set @umrez = case when @calc = 0 then 1
when @calc = 1 then 10
when @calc = 2 then 100
when @calc = 3 then 1000
when @calc = 4 then 10000
when @calc = 5 then 100000
when @calc = 6 then 1000000
end
set @UMREN = @val * @UMREZ
select @var, @point, @zero, @calc, @UMREZ, @UMREN