mssql sqlserver 如何将数字(金额)转换为中文(大写中文或小写中文)


摘要:
下文主要讲述如何通过脚本,将sql脚本中的数字转换为大写中文或小写中文的方法


目录:
1、转换方法分享
2、举例说明转换方法



sql数字转换为中文的方法
1 定义一个字符串,
2 将字符串赋值 “零一二三四五六七八九”
3 根据数字的数值,依次取数字所在的位置的字符,并返回



举例说明:

 

/*
author:定义一个数字转换为中文的数据库函数
*/
CREATE FUNCTION fn_sqlShuZiZhuanHuan (@num AS BIGINT )
RETURNS VARCHAR(100)
AS
BEGIN

 DECLARE @backZhongWenInfo VARCHAR(100)
    IF LEN(@num) = 1
    BEGIN
       SET @backZhongWenInfo = SUBSTRING('零一二三四五六七八九', @num + 1, 1)   --当数字为一位时,直接返回一个数字
    END 
    ELSE
    BEGIN
     set @backZhongWenInfo ='' ---初始化返回值
        DECLARE @shuZiLen int;   ---数字长度
        DECLARE @shuZiToZiFu VARCHAR(100) ---将数字转换为字符串
        DECLARE @i  int    ---临时变量,循环
        DECLARE @shuZiWeiShu int  ----数字当前转换至多少位(临时变量)
     
        SET @shuZiToZiFu = CAST(@num AS VARCHAR(100));
        SELECT @shuZiLen = LEN(@shuZiToZiFu); 
        SET @i = 1;  
        
         -----递归调用函数生成字符 start
        
        WHILE @i <= @shuZiLen
        BEGIN 
        SET @backZhongWenInfo = @backZhongWenInfo + dbo.fn_sqlShuZiZhuanHuan(SUBSTRING(@shuZiToZiFu, @i, 1))  ---每次只截取一个字符串 返回中文
        SET @shuZiWeiShu = @shuZiLen + 1 - @i; 
           IF @shuZiWeiShu > 1
              BEGIN 
                 /*生成金额符号*/
                 SET @backZhongWenInfo = @backZhongWenInfo + CASE WHEN @shuZiWeiShu % 4 = 0 THEN '千'
                      WHEN @shuZiWeiShu % 2 = 0 THEN '十'
                      WHEN @shuZiWeiShu % 8 = 1 THEN '亿'
                      WHEN @shuZiWeiShu % 4 = 1 THEN '万'
                      WHEN @shuZiWeiShu % 2 = 1 THEN '百'
                      END
              END
         SET @i = @i + 1
        END

       
        
        
        -----递归调用函数生成字符 end
        
    
    
    END
    
    
    RETURN  @backZhongWenInfo 

END