假设我有这个SELECT语句
SELECT TOP 1 CAST(G.ACCOUNTINGCURRENCYAMOUNT AS decimal(15,2) )
FROM MicrosoftDynamicsAx.dbo.GENERALJOURNALACCOUNTENTRY G
我得到了结果: - 372263.29
。所以我想得到-00000000372263.29
如何在左边填充零? 提前谢谢
答案 0 :(得分:1)
您无法存储带前导零的数字,您需要将其存储为varchar。因此,当您想要前导零时,您可以选择:
在上面看起来你在表中有一个数值,想要拉出一个固定长度的字符串。尝试:
SELECT TOP 1
CASE
WHEN CAST(G.ACCOUNTINGCURRENCYAMOUNT AS decimal(15,2) >= 0 THEN
RIGHT('000000000000000000000' + CAST(CAST(G.ACCOUNTINGCURRENCYAMOUNT AS decimal(15,2)) AS VARCHAR), 15)
ELSE
'-' + RIGHT('000000000000000000000' + CAST(-1 * CAST(G.ACCOUNTINGCURRENCYAMOUNT AS decimal(15,2)) AS VARCHAR), 15)
END
FROM
MicrosoftDynamicsAx.dbo.GENERALJOURNALACCOUNTENTRY G
答案 1 :(得分:0)
关键的想法是需要将输出转换为字符串以将0
放在前面。如果您不想输入长串的0,可以使用str()
和replace()
:
SELECT TOP 1 REPLACE(STR(G.ACCOUNTINGCURRENCYAMOUNT, 15, 2), ' ', '0')
FROM MicrosoftDynamicsAx.dbo.GENERALJOURNALACCOUNTENTRY G;
编辑:
处理负数。 。 。
SELECT TOP 1 (CASE WHEN G.ACCOUNTINGCURRENCYAMOUNT >= 0
THEN REPLACE(STR(G.ACCOUNTINGCURRENCYAMOUNT, 15, 2), ' ', '0')
THEN '-' + REPLACE(STR(ABS(G.ACCOUNTINGCURRENCYAMOUNT), 14, 2), ' ', '0')
END)
FROM MicrosoftDynamicsAx.dbo.GENERALJOURNALACCOUNTENTRY G;