我有这样的情况
我有一个'money'类型的列,2个十进制。示例数据:(65.00)
我需要为它添加12个零/ 000000000000,以便输出如下:
(65.00转换为6500)+(000000000000)= 000000006500
输出:000000006500
我怎样才能做到这一点?感谢您的帮助和建议
答案 0 :(得分:0)
您可以使用几个强制转换,乘以100,然后使用REPLICATE('0')填充必要数量的零。 我假设你想要最多2 x尾随小数,但不多了。
DECLARE @value MONEY;
SET @value = 65.123;
DECLARE @intValue BIGINT;
SET @intValue = CAST(@value * 100.0 AS BIGINT);
SELECT REPLICATE('0',12-LEN(@intValue)) + CAST(@intValue AS NVARCHAR(20));
返回000000006512
如果您需要在一组上执行此操作,可以将CTE用于中间步骤,例如
WITH cte AS
(
SELECT CAST(MoneyField * 100.0 AS BIGINT) AS intValue
FROM SomeTable
)
SELECT
REPLICATE('0',12-LEN(cte.intValue)) + CAST(cte.intValue AS NVARCHAR(20))
FROM cte;
答案 1 :(得分:0)
这是可能的。但是输出列应该是varchar(15)的类型。如果你想进一步操作你的输出你必须将它转换为int或其他
SELECT CONCAT(REPEAT('0',12-LENGTH(65.00)),(65.00*100));