我想将numeric(15,2)
值转换为nvarchar(15)
字符串。
值为132.500m
,我希望转换后的值为000000000013250
。
我编写了这段代码,但它返回了000000000000132
。
代码:
SELECT
REPLACE (STR(ROUND(CAST(MonthlyPayment.PaymentAmount AS NUMERIC(18,2)), 0, 1), 15), ' ', 0)
FROM
MonthlyPayment
答案 0 :(得分:2)
尝试这样
DECLARE @d DECIMAL(15,2)=132.500;
SELECT REPLACE(STR(CAST(@d*100 AS int),15),' ','0')
由于INT
的值范围,上面的代码会因算术溢出异常而中断。但这适用于非常大的数字:
DECLARE @d DECIMAL(15,2)=1234567890123.45;
SELECT REPLACE(STR(CAST(@d*100 AS BIGINT),15),' ','0')
甚至更大: - )
DECLARE @d DECIMAL(15,2)=9999999999999.97;
SELECT REPLACE(STR(CAST(@d*100 AS BIGINT),15),' ','0')
但9999999999999.98
和9999999999999.99
是一个很小的问题。它有效,如果你带有前导零的16位数......
答案 1 :(得分:0)
这个怎么样?
SELECT RIGHT(REPLICATE('0', 15) +
CAST(CAST(MonthlyPayment.PaymentAmount * 100 as INT) as VARCHAR(15)),
15)
那是: