如何在查询mssql上添加或连接money类型和字符串

时间:2014-02-05 04:46:37

标签: sql-server concatenation add

我有这样的情况

我有一个'money'类型的列,2个十进制。示例数据:(65.00)

我需要为它添加12个零/ 000000000000,以便输出如下:

  

(65.00转换为6500)+(000000000000)= 000000006500

输出:000000006500

我怎样才能做到这一点?感谢您的帮助和建议

2 个答案:

答案 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;

Fiddle here

答案 1 :(得分:0)

这是可能的。但是输出列应该是varchar(15)的类型。如果你想进一步操作你的输出你必须将它转换为int或其他

SELECT CONCAT(REPEAT('0',12-LENGTH(65.00)),(65.00*100));
相关问题