• 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

  • 相关阅读:
    荔枝微课基础架构的演进与实践
    如何制作出让女朋友满意的大片
    SSL 证书变革之时已至,这些变化你都清楚吗?
    浅谈 FTP、FTPS 与 SFTP
    HTTP/3 来了,你了解它么?
    看视频常见的 720p、1080p、4k,这些分辨率到底包含了什么
    element-ui表单验证遇到v-if时不生效
    声纹识别算法阅读之CN-Celeb
    apply-cmvn&apply-cmvn-online&apply-cmvn-slide
    语音识别算法阅读之TDNN-F
  • 原文地址:https://www.cnblogs.com/wwwlzp/p/13625885.html
Copyright © 2020-2023  润新知