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编写,格式效果可能不太好。

  • 相关阅读:
    中国移动全球通寻宝第四期攻略
    推荐一个奥运门票交流的网站!
    国务院发出通知明确2008年部分节假日放假安排
    [转]开发人员如何谈加薪,抛砖引玉,欢迎大家各抒己见。
    中级.NET开发人员应该知道些什么?
    linux系统管理 系统安全及应用
    Linux10 进程 定时任务 僵尸进程
    shell脚本练习
    虚拟机和liunx系统的装机
    Linux三剑客awk的应用对比案例详解
  • 原文地址:https://www.cnblogs.com/lhmlyx2723356/p/4235172.html
Copyright © 2011-2022 走看看