设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1302|回复: 0

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

[复制链接]

23

主题

182

金钱

295

积分

入门用户

发表于 2019-8-27 16:13:23 | 显示全部楼层 |阅读模式

在做一些订单金额、合同金额转换的时候,会遇到数字转成中文的情况,所以整理了一个数字转中文的函数;
  1. /*
  2.     说明:数字金额转中文金额
  3.     示例:187.4 转成 壹佰捌拾柒圆肆角整
  4. */

  5. CREATE FUNCTION [dbo].[CNumeric](@num numeric(14,2))
  6.     returns nvarchar(100)
  7. BEGIN
  8.     Declare @n_data nvarchar(20),@c_data nvarchar(100),@n_str nvarchar(10),@i int
  9.     Set @n_data=right(space(14)+cast(cast(abs(@num*100) as bigint) as nvarchar(20)),14)
  10.     Set @c_data=''
  11.     Set @i=1
  12.    
  13.     WHILE @i<=14
  14.     Begin
  15.         set @n_str=substring(@n_data,@i,1)
  16.         if @n_str<>''
  17.         begin
  18.         IF not ((SUBSTRING(@n_data,@i,2)= '00') or
  19.         ((@n_str= '0') and ((@i=4) or (@i=8) or (@i=12) or (@i=14))))
  20.         SET @c_data=@c_data+SUBSTRING( N'零壹贰叁肆伍陆柒捌玖',CAST(@n_str AS int)+1,1)
  21.         IF not ((@n_str= '0') and (@i <> 4) and (@i <> 8) and (@i <> 12))
  22.         SET @c_data=@c_data+SUBSTRING( N'仟佰拾亿仟佰拾万仟佰拾圆角分',@i,1)
  23.         IF SUBSTRING(@c_data,LEN(@c_data)-1,2)= N'亿万'
  24.         SET @c_data=SUBSTRING(@c_data,1,LEN(@c_data)-1)
  25.         END
  26.         SET @i=@i+1
  27.     END
  28.     IF @num <0
  29.         SET @c_data= '(负数)'+@c_data
  30.     IF @num=0
  31.         SET @c_data= '零圆'
  32.     IF @n_str= '0'
  33.         SET @c_data=@c_data+ '整'
  34.         
  35.     RETURN(@c_data)
  36. END
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

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