|
在做一些订单金额、合同金额转换的时候,会遇到数字转成中文的情况,所以整理了一个数字转中文的函数;
- /*
- 说明:数字金额转中文金额
- 示例: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
复制代码 |
|