[英]Cast and Convert decimal to a zero in left in T-SQL
假設我有這個SELECT陳述式
SELECT TOP 1 CAST(G.ACCOUNTINGCURRENCYAMOUNT AS decimal(15,2) )
FROM MicrosoftDynamicsAx.dbo.GENERALJOURNALACCOUNTENTRY G
我得到的結果是: 372263.29
。所以我想得到-00000000372263.29
我如何在左側填充零? 預先感謝
您將無法存儲前導零的數字,需要將其存儲為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
關鍵思想是需要將輸出轉換為字符串以將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;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.