不服输的倔强 发表于 2019-8-27 16:13:23

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


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

CREATE FUNCTION .(@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
页: [1]
查看完整版本: Sql Server 数字金额转中文金额 函数