欢迎光临
我们一直在努力

小写转大写金额-数据库专栏,SQL Server

建站超值云服务器,限时71元/月

在网上见到一个oracle的版本的小写转大写金额的函数,感觉还不错现在把它转成sql server版本。

/********************************************************
作者:(birdie_7761@cmmail.com)
版本:1.0
创建时间:20020227
修改时间:
功能:小写金额转换成大写
参数:n_lowermoney 小写金额
          v_transtype 种类 — 1: directly translate, 0: read it in words
输出:大写金额
********************************************************/
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 = ltrim(rtrim(round(@n_lowermoney,2))) –四舍五入为指定的精度并删除数据左右空格
set @i_i = 1
set @v_upperstr =

while ( @i_i <= len(@v_lowerstr))
begin
      select @v_upperpart = case substring(@v_lowerstr,len(@v_lowerstr) – @i_i + 1,1)
                            when  . then  元
                            when  0 then  零
                            when  1 then  壹
                            when  2 then  贰
                            when  3 then  叁
                            when  4 then  肆
                            when  5 then  伍
                            when  6 then  陆
                            when  7 then  柒
                            when  8 then  捌
                            when  9 then  玖
                            end
                          +
                            case @i_i
                            when  1  then  分
                            when  2  then  角
                            when  3  then 
                            when  4  then 
                            when  5  then  拾
                            when  6  then  佰
                            when  7  then  仟
                            when  8  then  万
                            when  9  then  拾
                            when  10  then  佰
                            when  11  then  仟
                            when  12  then  亿
                            when  13  then  拾
                            when  14  then  佰
                            when  15  then  仟
                            when  16  then  万
                            else
                            end
set @v_upperstr = @v_upperpart + @v_upperstr
set @i_i = @i_i + 1
end

if ( 0 = @v_transtype)
begin
set @v_upperstr = replace(@v_upperstr,零拾,零)
set @v_upperstr = replace(@v_upperstr,零佰,零)
set @v_upperstr = replace(@v_upperstr,零仟,零)
set @v_upperstr = replace(@v_upperstr,零零零,零)
set @v_upperstr = replace(@v_upperstr,零零,零)
set @v_upperstr = replace(@v_upperstr,零角零分,整)
set @v_upperstr = replace(@v_upperstr,零分,整)
set @v_upperstr = replace(@v_upperstr,零角,零)
set @v_upperstr = replace(@v_upperstr,零亿零万零元,亿元)
set @v_upperstr = replace(@v_upperstr,亿零万零元,亿元)
set @v_upperstr = replace(@v_upperstr,零亿零万,亿)
set @v_upperstr = replace(@v_upperstr,零万零元,万元)
set @v_upperstr = replace(@v_upperstr,万零元,万元)
set @v_upperstr = replace(@v_upperstr,零亿,亿)
set @v_upperstr = replace(@v_upperstr,零万,万)
set @v_upperstr = replace(@v_upperstr,零元,元)
set @v_upperstr = replace(@v_upperstr,零零,零)
end

— 对壹元以下的金额的处理
if ( 元 = substring(@v_upperstr,1,1))
begin
     set @v_upperstr = substring(@v_upperstr,2,(len(@v_upperstr) – 1))
end

if ( 零 = substring(@v_upperstr,1,1))
begin
     set @v_upperstr = substring(@v_upperstr,2,(len(@v_upperstr) – 1))
end

if ( 角 = substring(@v_upperstr,1,1))
begin
     set @v_upperstr = substring(@v_upperstr,2,(len(@v_upperstr) – 1))
end

if ( 分 = substring(@v_upperstr,1,1))
begin
     set @v_upperstr = substring(@v_upperstr,2,(len(@v_upperstr) – 1))
end

if (整 = substring(@v_upperstr,1,1))
begin
     set @v_upperstr = 零元整
end
return @v_upperstr
end

例子:

select dbo.l2u(56588441.111,0)

select dbo.l2u(00.00,0)

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 小写转大写金额-数据库专栏,SQL Server
分享到: 更多 (0)