Sql Server 数字金额转中文金额 函数

  在做一些订单金额、合同金额转换的时候,经常会遇到数字转成中文的情况,所以整理了一个数字转中文的函数;

/*
    说明:数字金额转中文金额
    示例:187.4 转成 壹佰捌拾柒圆肆角整
*/

CREATE FUNCTION [dbo].[CNumeric](@num numeric(14,2))
    returns nvarchar(100)
BEGIN
    Declare @n_data nvarchar(20),@c_data nvarchar(100),@n_str nvarchar(10),@i int
    Set @n_data=right(space(14)+cast(cast(abs(@num*100) as bigint) as nvarchar(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( N‘零壹贰叁肆伍陆柒捌玖‘,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( N‘仟佰拾亿仟佰拾万仟佰拾圆角分‘,@i,1)
        IF SUBSTRING(@c_data,LEN(@c_data)-1,2)= N‘亿万‘
        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

原文地址:https://www.cnblogs.com/Rawls/p/11376159.html

时间: 2024-10-08 10:33:28

Sql Server 数字金额转中文金额 函数的相关文章

SQL Server数据库partition by 与ROW_NUMBER()函数使用详解[转]

关于SQL的partition by 字段的一些用法心得 先看例子: if object_id('TESTDB') is not null drop table TESTDB create table TESTDB(A varchar(8), B varchar(8)) insert into TESTDB select 'A1', 'B1' union all select 'A1', 'B2' union all select 'A1', 'B3' union all select 'A2'

SQL Server提供更为灵活的转换函数FORMAT。

CONVERT函数的style是数字,记忆起来比较困难,只能按照系统定义的格式来显示,不够灵活.SQL Server提供更为灵活的转换函数FORMAT. 2,FORMAT函数,控制日期和时间类型的显示格式 FORMAT函数主要用于格式化显示date/time类型和数值类型,参数format用于指定显示的格式,给予用户对格式更自由地控制,culture参数是可选的,用于指定显示的语言,该函数返回值的数据类型是NVARCHAR,如果格式转换失败,该函数返回NULL: FORMAT ( value,

(转) 如何向SQL Server 2005中插入中文

如何向SQL Server 2005中插入中文? 向SQL Server 2005中插入中文数据后,查询出来的结果是???,根本就不显示中文 解决方法: 1 关于数据库排序规则,将SQL_Latin1_General_CP1_CI_AS改成Chinese_PRC_CI_AS ,看一下是否可以解决这个问题,可惜我不能直接操作数据库,测试不了! 修改数据库的排序规则命令: alter   database   [databasename]  COLLATE   Chinese_PRC_CI_AS 2

PHP实现数字金额转中文金额

 解决发票系统中,发票单上需要填写中文金额的问题:  function ToChineseNum($num) {         $zh_num = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];         $zh_unit = ['分', '角', '元', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿', '拾', '佰', '仟'];         if (!is_numeric(str_repl

在SQL SERVER中实现RSA加解密函数(第二版)

/*************************************************** 作者:herowang(让你望见影子的墙) 日期:2010.1.5 注: 转载请保留此信息 更多内容,请访问我的博客:blog.csdn.NET/herowang ****************************************************/ /* 本次修改增加了unicode的支持,但是加密后依然显示为进制数据,因为进行RSA加密后所得到的unicode编码是无

SQL Server通过外部程序集注册正则表达式函数(CLR函数)

1.下载dll程序集(通过C#编写的支持正则的方法),百度网盘下载: 1.1如果只想用,可以直接下载MSSQLRegexExtend.dll https://pan.baidu.com/s/1qX8eHa8 1.2正则程序集对应的解决方案MSSQLRegexExtend.sln,已打包 https://pan.baidu.com/s/1qXZja9m 2.SQL Server数据库注册程序集 CREATE ASSEMBLY AssemblyRegex from 'D:\MSSQLRegexExt

调试SQL Server的存储过程及用户定义函数

分类: 数据库管理 2005-06-03 13:57 9837人阅读 评论(5) 收藏 举报 sql server存储vb.net服务器sql语言 1.在查询分析器中调试 查询分析器中调试的步骤如下:    SQL 2000查询分析器        --左连的对象浏览器(没有的话按F8)        --对象项中        --右键调试的存储过程        --调试        --输入参数(必须输入所有的参数,包括默认值/输出参数        --点击执行        --出现

实现SQL Server中的切割字符串SplitString函数

有时我们要用到批量操作时都会对字符串进行拆分,可是SQL Server中却没有自带Split函数,所以要自己来实现了.没什么好说的,需要的朋友直接拿去用吧 SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO /* by kudychen 2011-9-28 */ CREATE function [dbo].[SplitString] ( @Input nvarchar(max), --input string to be separated @Sep

实现SQL Server中的切割字符串SplitString函数,返回Table

有时我们要用到批量操作时都会对字符串进行拆分,可是SQL Server中却没有自带Split函数,所以要自己来实现了. -- ============================================= -- Author: chenlong -- Create date: 2015-02-02 -- Description: 根据逗号分隔拆分字符串,返回table -- ============================================= ALTER FUN