SQL金额转大写

create function [dbo].[fn_getformatmoney] (@money numeric(14,2))
returns nvarchar(32) as
begin
    declare @money_num nvarchar(20)    --存储金额的字符形式
        , @money_chn nvarchar(32)    --存储金额的中文大写形式
        , @n_chn nvarchar(1), @i int    --临时变量

    select @money_chn=case when @money>=0 then ‘‘ else null end
        , @money=abs(@money)
        , @money_num=stuff(str(@money, 15, 2), 13, 1, ‘‘)    --加前置空格补齐到位(去掉小数点)
        , @i=patindex(‘%[1-9]%‘, @money_num)    --找到金额最高位

    while @i>=1 and @i<=14
    begin
        set @n_chn=substring(@money_num, @i, 1)
        if @n_chn<>‘0‘ or (substring(@money_num,@i+1,1)<>‘0‘ and @i not in(4, 8, 12, 14))    --转换阿拉伯数字为中文大写形式
            set @money_chn=@money_chn+substring(‘零壹贰叁肆伍陆柒捌玖‘, @n_chn+1, 1)
        if @n_chn<>‘0‘ or @i in(4, 8, 12)    --添加中文单位
            set @money_chn=@money_chn+substring(‘仟佰拾亿仟佰拾万仟佰拾圆角分‘,@i,1)     

        set @i=@i+1
    end

    set @money_chn=replace(@money_chn, ‘亿万‘, ‘亿‘)    --当金额为x亿零万时去掉万
    if @money=0 set @money_chn=‘零圆整‘    --当金额为零时返回‘零圆整‘
    if @n_chn=‘0‘ set @money_chn=@money_chn+‘整‘    --当金额末尾为零分时以‘整‘结尾

    return @money_chn    --返回大写金额
end
go

--select dbo.fn_getformatmoney(888.88)

时间: 2024-12-20 07:36:42

SQL金额转大写的相关文章

SQL金额小写转大写

CREATE FUNCTION dbo.L2U(@n_LowerMoney numeric(15,2),@v_TransType int) RETURNS VARCHAR(200) AS BEGIN Declare @v_LowerStr VARCHAR(200) -- 小写金额 Declare @v_UpperPart VARCHAR(200) Declare @v_UpperStr VARCHAR(200) -- 大写金额 Declare @i_I int set @v_LowerStr =

SQL关键字转换大写核心算法实现

1 不跟你多废话 上代码! /// <summary> /// SQL关键字转换器 /// </summary> public class SqlConverter : IKeywordsConvertible { public SqlConverter(string[] keywords) { Keywords = keywords; } public SqlConverter() { } /// <summary> /// 关键字集合 /// </summar

将一个数转化为中文金额的大写方式(有详细的解题步骤)

1 /* 2 * 程序目的: 从命令行输入一个数,并将其转化为中文金额的大写方式 3 * 思路: 4 * 所需对象:用到两个数组,一个存中文大写的数字,一个存金额单位: 5 * 为了保持精度的相对准确,用到BigDecimal类:(不懂的朋友,上网一查就知道了): 6 * 我这里用了StringBuilder类来存转化后的结果:(其实用String,StringBuffer都可以) 7 * 过程:输入一个double类型的数———>转化为BigDecimal类的对象———>四舍五入后转化为lo

BPM实例分享——金额规则大写

金额规则大写 在涉及金额的流程中经常会遇到需要大写金额数据与小写金额匹配,如何实现输入数字后自动转换呢? 初级用法: 1.在默认表单基本属性javascript 中增加如下金额转换方法 /** 数字金额大写转换(可以处理整数,小数,负数) */ function chineseNumber(dValue) { var maxDec = 2; // 验证输入金额数值或数值字符串: dValue = dValue.toString().replace(/,/g, ""); dValue =

用链表实现表单金额的大写格式输出

1 include<iostream> 2 using namespace std; 3 #include<string> 4 5 typedef int T; 6 7 class List{ 8 struct Node{ 9 T data1; 10 string data2; 11 Node* next; 12 Node(const T& t=T(), string s=string()):data1(t),data2(s){next = NULL;} 13 }; 14

C#:小写金额转换为大写

#region 小写金额转换为大写 public static string CurrToChnNum(double Currnum) { string sResult = ""; if (Math.Abs(Currnum) < 1e-20) return "零圆整"; if (Currnum < 1e-20) sResult = "负"; sResult = sResult + StringToChnNum(Math.Abs(Mat

Oracle 小写金额转换为大写

在开发EBS的合同报表打印的时候需要将小写金额转换为大写. 如下是本人自己写的转换函数. 主要思路:先获取小数点位置,在区分整数与小数点处理,根据位数和数字组合读取金额. 最后再处理特殊显示部分. /******************************************************************* *  FUNCTION get_big_amount 数字金额转换为大写 *  p_amount 输入数据金额 *  返回大写金额,位数 :千亿----厘 ****

js金额转大写数字

//金额转大写数字 const intToChinese = money => { //汉字的数字 let cnNums = new Array('零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'); //基本单位 let cnIntRadice = new Array('', '拾', '佰', '仟'); //对应整数部分扩展单位 let cnIntUnits = new Array('', '万', '亿', '兆'); //对应小数部分单位

SQL标量值函数:小写金额转大写

我们日常开发业务系统中,作为统计报表中,特别是财务报表,显示中文金额经常遇到. 转换大小写的方法有很多,以下是从数据库函数方面解决这一问题. 效果如图: 调用:SELECT dbo.[Fn_ConvertRMB](192.4) 具体函数如下: -- ============================================= -- 调用:SELECT dbo.[Fn_ConvertRMB](192.4) -- Create date: 2015-01-06 -- Descripti