设为首页 收藏本站
查看: 446|回复: 0

[经验分享] SQL Server 存储过程-阿拉伯数字转换成中文大写金额<转>

[复制链接]

尚未签到

发表于 2016-11-8 11:16:50 | 显示全部楼层 |阅读模式
CREATE   PROCEDURE   dbo.L2U   
(
@n_LowerMoney   numeric(15,2),
@v_TransType   int,
@RET   VARCHAR(200)   output
)
AS   
Declare   @v_LowerStr   VARCHAR(200)   --   小写金额   
Declare   @v_UpperPart   VARCHAR(200)   
Declare   @v_UpperStr   VARCHAR(200)   --   大写金额
Declare   @i_I   int
set   nocount   on
select   @v_LowerStr   =   LTRIM(RTRIM(STR(@n_LowerMoney,20,2)))   --四舍五入为指定的精度并删除数据左右空格
select   @i_I   =   1
select   @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
select   @v_UpperStr   =   @v_UpperPart   +   @v_UpperStr
select   @i_I   =   @i_I   +   1
end
--------print     '//v_UpperStr   = '+@v_UpperStr   + '// '
if   (   @v_TransType=0   )
begin
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零拾 ', '零 ')   
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零佰 ', '零 ')   
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零仟 ', '零 ')   
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零零零 ', '零 ')
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零零 ', '零 ')
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零角零分 ', '整 ')
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零分 ', '整 ')
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零角 ', '零 ')
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零亿零万零元 ', '亿元 ')
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '亿零万零元 ', '亿元 ')
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零亿零万 ', '亿 ')
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零万零元 ', '万元 ')
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '万零元 ', '万元 ')
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零亿 ', '亿 ')
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零万 ', '万 ')
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零元 ', '元 ')
select   @v_UpperStr   =   REPLACE(@v_UpperStr, '零零 ', '零 ')
end
--   对壹元以下的金额的处理   
if   (   substring(@v_UpperStr,1,1)= '元 '   )
begin
select   @v_UpperStr   =   substring(@v_UpperStr,2,(len(@v_UpperStr)   -   1))
end
if   (substring(@v_UpperStr,1,1)=   '零 ')
begin
select   @v_UpperStr   =   substring(@v_UpperStr,2,(len(@v_UpperStr)   -   1))
end
if   (substring(@v_UpperStr,1,1)= '角 ')
begin
select   @v_UpperStr   =   substring(@v_UpperStr,2,(len(@v_UpperStr)   -   1))
end
if   (   substring(@v_UpperStr,1,1)= '分 ')
begin
select   @v_UpperStr   =   substring(@v_UpperStr,2,(len(@v_UpperStr)   -   1))
end
if   (substring(@v_UpperStr,1,1)= '整 ')
begin
select   @v_UpperStr   =   '零元整 '
end
select   @ret=@v_UpperStr
GO

调用过程:
declare   @ret   varchar(200)
exec   L2U   567983.897,1,@ret   output
select   @ret

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-297395-1-1.html 上篇帖子: SQL Server 2005数据同步技术遇到的问题及解决方案 下篇帖子: 你真的会使用SQL Server的备份还原功能吗?之二:主要备份类型
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表