SQLSERVER中的人民币数字转大写的函数实现

作者: shazi 
sql 代码
  1. CREATE  FUNCTION [dbo].[f_num_chn] (@num numeric(14,5))  
  2. RETURNS varchar(100) WITH ENCRYPTION  
  3. AS  
  4. BEGIN  
  5. --版权所有:weihuachao@sina.com  
  6.   DECLARE @n_data VARCHAR(20),@c_data VARCHAR(100),@n_str VARCHAR(10),@i int  
  7.   SET @n_data=RIGHT(SPACE(14)+CAST(CAST(ABS(@num*100) AS bigintAS varchar(20)),14)  
  8.   SET @c_data=''  
  9.   SET @i=1  
  10.   WHILE @i<=14  
  11.   BEGIN  
  12.     SET @n_str=SUBSTRING(@n_data,@i,1)  
  13.     IF @n_str<>' '  
  14.     BEGIN  
  15.       IF not ((SUBSTRING(@n_data,@i,2)='00') or  
  16.         ((@n_str='0') and ((@i=4) or (@i=8) or (@i=12) or (@i=14))))  
  17.         SET @c_data=@c_data+SUBSTRING('零壹贰叁肆伍陆柒捌玖',CAST(@n_str AS int)+1,1)  
  18.       IF not ((@n_str='0') and (@i<>4) and (@i<>8) and (@i<>12))  
  19.         SET @c_data=@c_data+SUBSTRING('仟佰拾亿仟佰拾万仟佰拾圆角分',@i,1)  
  20.       IF SUBSTRING(@c_data,LEN(@c_data)-1,2)='亿万'  
  21.         SET @c_data=SUBSTRING(@c_data,1,LEN(@c_data)-1)  
  22.     END  
  23.     SET @i=@i+1  
  24.   END  
  25.   IF @num<0  
  26.     SET @c_data='(负数)'+@c_data  
  27.   IF @num=0  
  28.     SET @c_data='零圆'  
  29.   IF @n_str='0'  
  30.     SET @c_data=@c_data+'整'  
  31.   RETURN(@c_data)  
  32. END  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值