zoukankan      html  css  js  c++  java
  • SQL标量值函数:小写金额转大写

    我们日常开发业务系统中,作为统计报表中,特别是财务报表,显示中文金额经常遇到。

    转换大小写的方法有很多,以下是从数据库函数方面解决这一问题.

    效果如图:

    调用:SELECT dbo.[Fn_ConvertRMB](192.4)

    image

    具体函数如下:

    -- =============================================
    -- 调用:SELECT dbo.[Fn_ConvertRMB](192.4)
    -- Create date: 2015-01-06
    -- Description:    返回中文金额
    -- =============================================
    CREATE FUNCTION [dbo].[Fn_ConvertRMB] (@num NUMERIC(14, 2))
    RETURNS VARCHAR(100)
    AS
        BEGIN
            DECLARE @n_data VARCHAR(20) ,
                @c_data VARCHAR(100) ,
                @n_str VARCHAR(10) ,
                @i INT
            SET @n_data=RIGHT(SPACE(14)+CAST(CAST(ABS(@num*100) AS BIGINT) AS VARCHAR(20)), 14)
            SET @c_data=''
            SET @i=1
            WHILE @i<=14
                BEGIN
                    SET @n_str=SUBSTRING(@n_data, @i, 1)
                    IF @n_str<>' '
                        BEGIN
                            IF NOT ((SUBSTRING(@n_data, @i, 2)='00')
                                OR ((@n_str='0')
                                AND ((@i=4)
                                OR (@i=8)
                                OR (@i=12)
                                OR (@i=14))))
                                SET @c_data=@c_data+SUBSTRING('零壹贰叁肆伍陆柒捌玖', CAST(@n_str AS INT)+1, 1)
                            IF NOT ((@n_str='0')
                                AND (@i<>4)
                                AND (@i<>8)
                                AND (@i<>12))
                                SET @c_data=@c_data+SUBSTRING('仟佰拾亿仟佰拾万仟佰拾圆角分', @i, 1)
                            IF SUBSTRING(@c_data, LEN(@c_data)-1, 2)='亿万'
                                SET @c_data=SUBSTRING(@c_data, 1, LEN(@c_data)-1)
                        END
                    SET @i=@i+1
                END
            IF @num<0
                SET @c_data='(负数)'+@c_data
            IF @num=0
                SET @c_data='零圆'
            IF @n_str='0'
                SET @c_data=@c_data+'整'
            RETURN(@c_data)
        END

    如果朋友们觉得以后可能会用到的话,欢迎转载,当然也可以推荐一下,谢谢。

    PS:此博文是利用Windows Live Writer 2012编写,格式效果可能不太好。

  • 相关阅读:
    mysql复习相关
    OpenStack三种类型的NAT转换
    openstack资料相关
    [转]Web 调试工具之 Advanced REST client
    [转]Aspose.Words.dll 将 Word 转换成 html
    [Android] 开发第十天
    [win10]遇坑指南
    [转]Explorer.exe的命令行参数
    [Android] 开发第九天
    [Android] 开发第八天
  • 原文地址:https://www.cnblogs.com/lhmlyx2723356/p/4235172.html
Copyright © 2011-2022 走看看