首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

金額阿拉伯數字轉中文大寫預存程序:支援元/角/分、萬/億單位

     編輯:關於SqlServer

功能

將 MONEY 型別金額轉為中文大寫 (如 1234.56 → 壹仟貳佰叁拾肆元伍角陸分)。

預存程序代碼

CREATE PROCEDURE AtoC
    @ChangeMoney MONEY
AS
BEGIN
    SET NOCOUNT ON
    DECLARE @StrNum CHAR(20) = '零壹貳參肆伍陸柒捌玖'
    DECLARE @StrUnit CHAR(30) = '萬仟佰拾億仟佰拾萬仟佰拾元角分'
    DECLARE @NumStr VARCHAR(100) = CAST(@ChangeMoney * 100 AS INT)  -- 轉分為整數
    DECLARE @Len INT = LEN(@NumStr)
    DECLARE @UnitStr VARCHAR(30) = RIGHT(@StrUnit, @Len)  -- 對齊單位
    DECLARE @Result VARCHAR(100) = ''
    DECLARE @i INT = 1, @ZeroCount INT = 0
    DECLARE @ChNum CHAR(1), @ChUnit CHAR(1)

    WHILE @i <= @Len
    BEGIN
        DECLARE @Digit CHAR(1) = SUBSTRING(@NumStr, @i, 1)
        IF @Digit <> '0'
        BEGIN
            SET @ChNum = SUBSTRING(@StrNum, CAST(@Digit AS INT) + 1, 1)
            SET @ChUnit = SUBSTRING(@UnitStr, @i, 1)
            SET @ZeroCount = 0
        END
        ELSE
        BEGIN
            -- 處理連續零:只在關鍵位 (億/萬/元/個位) 輸出一個「零」
            IF @ZeroCount = 0 OR @i = @Len - 9 OR @i = @Len - 5 OR @i = @Len - 1
                SET @ChNum = '零'
            ELSE
                SET @ChNum = ''
            SET @ZeroCount = @ZeroCount + 1
            SET @ChUnit = ''
            -- 關鍵單位位強制輸出單位並重置零計數
            IF @i = @Len - 10 BEGIN SET @ChUnit = '億'; SET @ZeroCount = 0 END
            IF @i = @Len - 6  BEGIN SET @ChUnit = '萬'; SET @ZeroCount = 0 END
            IF @i = @Len - 2  BEGIN SET @ChUnit = '元'; SET @ZeroCount = 0 END
            IF @i = @Len      BEGIN SET @ChUnit = '';  SET @ZeroCount = 0 END -- 分位
        END
        SET @Result = @Result + @ChNum + @ChUnit
        SET @i = @i + 1
    END
    SELECT @Result AS ChineseAmount
END

呼叫範例

EXEC AtoC 123456.78  -- 輸出: 壹拾貳萬叁仟肆佰伍拾陸元柒角捌分

擴充建議

  • 轉為標量函數 (CREATE FUNCTION fn_MoneyToChinese) 方便 SELECT 直接呼叫。
  • 支援負數:前綴「負」字並取絕對值處理。
  • 大數字擴充:在 @StrUnit 加入「兆、京、垓」等單位並調整關鍵位判斷邏輯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved