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

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

效果如图:

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

具体函数如下:

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

SQL标量值函数:小写金额转大写的更多相关文章

  1. 常用Sql 标量值函数

    1.汉字拼音首字母 /****** Object: UserDefinedFunction [dbo].[fnGetHzPY] Script Date: 08/16/2018 09:04:47 Des ...

  2. SQL标量值函数:返回汉字拼音首拼

    今天遇到一个需求,客户要求在系统客户端选择客户的时候,可以用拼音首拼去快速过滤选择,此时我们在客户表里面加多一个拼音首拼字段CustPY来记录,字段加好了,我们要把所有客户名称的拼音简拼都更新到Cus ...

  3. sql标量值函数,将汉字转化为拼音,无音标

    USE [db_Test]GO SET ANSI_NULLS ONGO SET QUOTED_IDENTIFIER ONGO create function [dbo].[fn_GetPinyin]( ...

  4. SQL表值函数和标量值函数的区别

    SQL表值函数和标量值函数的区别 写sql存储过程经常需要调用一些函数来使处理过程更加合理,也可以使函数复用性更强,不过在写sql函数的时候可能会发现,有些函数是在表值函数下写的有些是在标量值下写的, ...

  5. sql 表值函数与标量值函数

    写sql存储过程经常需要调用一些函数来使处理过程更加合理,也可以使函数复用性更强,不过在写sql函数的时候可能会发现,有些函数是在表值函数下写的有些是在标量值下写的,区别是表值函数只能返回一个表,标量 ...

  6. sql server 中的表值函数和标量值函数

      顾名思义:表值函数返回的是表,而标量值函数可以返回基类型 一.表值函数 用户定义表值函数返回 table 数据类型.对于内联表值函数,没有函数主体:表是单个 SELECT 语句的结果集. 以下示例 ...

  7. sql中的表值函数与标量值函数区别与用法

    通俗来讲: 听名字就知道区别了 表值函数返回的是一张表结果,就和一个select查询语句一样,只不过里面带入了参数或者很复杂:标量值函数返回的只是一个值 一 .表值函数又分为内联函数与多语句函数 (1 ...

  8. sqlserver中的表值函数和标量值函数

    顾名思义:表值函数返回的是表,而标量值函数可以返回基类型 一.表值函数 用户定义表值函数返回 table 数据类型.对于内联表值函数,没有函数主体:表是单个 SELECT 语句的结果集. 以下示例创建 ...

  9. sqlserver 表值函数与标量值函数

    除了在我们常用的程序开发中要用到函数外,在sql语句中也常用到函数,不论哪种,思想都没有变,都是为了封装,可复用. 创建的方法和整体结构都大体相同,都少不了函数名,函数的形参,返回值等这些. 一.表值 ...

随机推荐

  1. Java多线程系列 JUC线程池04 线程池原理解析(三)

    转载 http://www.cnblogs.com/skywang12345/p/3509954.html  https://blog.csdn.net/qq_22929803/article/det ...

  2. mysql学习笔记1

  3. Hive- Hive 的基本操作

    创建数据库 create database db_hive; use db_hive; create database if not exists db_hive_02; create databas ...

  4. JQUERY Uploadify 3.1 C#使用案例

    近来因为要做一个上传功能,而firefox又不能直接使用file这样的标签,所以试着用js来写了一个,结果发现代码太多,验证太复杂,而且效果也不理想. 相对的,jquery提供的这一套uploadif ...

  5. Unity3D连接WCF

    Unity3D连接WCF: 一.最简单的案例 1.VS2015中: (1)建立WCF应用服务程序ForUnity: (2)将自动生成的IService1.cs与Service1.svc删除:   (3 ...

  6. jQuery对象和DOM对象的相互转化实现代码

    jQuery对象和DOM对象相互转化 jQuery对象和DOM对象 jQuery对象就是通过jQuery包装DOM对象后产生的对象.jQuery对象是jQuery独有的,其可以使用jQuery里的方法 ...

  7. 浏览器访问web站点原理图

    启动tomcat,在浏览器中输入http://localhost:8080/web_kevin/hello.html,发生的事情如下: 1.浏览器解析主机名,即解析localhost.浏览器首先会到本 ...

  8. Python基础-random模块及随机生成11位手机号

    import random # print(random.random()) # 随机浮点数,默认取0-1,不能指定范围# print(random.randint(1, 20)) # 随机整数,顾头 ...

  9. 解编码框架的比较(protobuf,thrift,Marshalling,xml)

    1.ProtoBuf 特点: 1.结构化数据存储格式 2.高效的解编码性能. 3.语言无关,平台无关,扩展性好. 4.官方支持java,c++,python三种语言. 5.性能比较好 (与之对比xml ...

  10. C++中函数重载

    C++中函数重载使用顶层const修饰参数和不使用const修饰参数效果是一样的,如果定义了这样的重载函数会报函数重定义的错误. 追其原因,C++中的函数传递方式有三种,一种是值传递,就是拷贝,一种是 ...