在做一些订单金额、合同金额转换的时候,经常会遇到数字转成中文的情况,所以整理了一个数字转中文的函数;
/* 说明:数字金额转中文金额 示例:187.4 转成 壹佰捌拾柒圆肆角整 */ create function [dbo].[cnumeric](@num numeric(14,2)) returns nvarchar(100) begin declare @n_data nvarchar(20),@c_data nvarchar(100),@n_str nvarchar(10),@i int set @n_data=right(space(14)+cast(cast(abs(@num*100) as bigint) as nvarchar(20)),14) set @c_data='' set @i=1 while @i<=14 begin set @n_str=substring(@n_data,@i,1) if @n_str<>'' begin if not ((substring(@n_data,@i,2)= '00') or ((@n_str= '0') and ((@i=4) or (@i=8) or (@i=12) or (@i=14)))) set @c_data=@c_data+substring( n'零壹贰叁肆伍陆柒捌玖',cast(@n_str as int)+1,1) if not ((@n_str= '0') and (@i <> 4) and (@i <> 8) and (@i <> 12)) set @c_data=@c_data+substring( n'仟佰拾亿仟佰拾万仟佰拾圆角分',@i,1) if substring(@c_data,len(@c_data)-1,2)= n'亿万' set @c_data=substring(@c_data,1,len(@c_data)-1) end set @i=@i+1 end if @num <0 set @c_data= '(负数)'+@c_data if @num=0 set @c_data= '零圆' if @n_str= '0' set @c_data=@c_data+ '整' return(@c_data) end