簡體   English   中英

在T-SQL中將左側的小數轉換並轉換為零

[英]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。 因此,當您想要前導零時,可以在以下選項之間進行選擇:

  • 將值作為數字存儲在表中,然后將結果選擇為varchar以便顯示前導零。
  • 將表存儲為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM