SQL SERVER函数将人民币数字转换成大写形式
CREATE FUNCTION [dbo].[f_num_chn] (@num numeric(14,5))
RETURNS varchar(100) WITH ENCRYPTION
AS
BEGIN
DECLARE @n_data VARCHAR(20),@c_data VARCHAR(100),@n_str VARCHAR(10),@i int
SET @n_data=RIGHT(SPACE(14)+CAST(CAST(ABS(@num*100) AS bigint) AS varchar(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("零壹贰叁肆伍陆柒捌玖",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("仟佰拾亿仟佰拾万仟佰拾圆角分",@i,1)
IF SUBSTRING(@c_data,LEN(@c_data)-1,2)="亿万"
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
SQL SERVER函数将人民币数字转换成大写形式
闲着也是闲着,欢迎大家多提宝贵意见
--阿拉伯数字转中文大写数字
Create function NToCC(@n int)
returns varchar(2)
as
begin
declare @s varchar(2)
if @n=0
set @s=""零""
if @n=1
set @s=""壹""
if @n=2
set @s=""贰""
if @n=3
set @s=""叁""
if @n=4
set @s=""肆""
if @n=5
set @s=""伍""
if @n=6
set @s=""陆""
if @n=7
set @s=""柒""
if @n=8
set @s=""捌""
if @n=9
set @s=""玖""
return @s
end
--可支持到上亿
Create function numbertoChineseBigString(@m money)
returns varchar(255)
begin
declare @i varchar(255)
declare @f varchar(255)
declare @r varchar(255)
declare @s varchar(255)
set @s=convert(varchar(255),@m)
if charindex(""."",@s)>0
begin
set @i=substring(@s,1,charindex(""."",@s)-1)
set @f=substring(@s,charindex(""."",@s)+1,len(@s))
end
else
set @i=@s
set @r=""""
declare @k int
set @k=len(@i)
while @k>=1
begin
--最多9位
if @k=9
set @r=@r+
dbo.NToCC(convert(int,substring(REVERSE(@i),@k,1)))
--@i
+""亿""
if @k=8
set @r=@r+dbo.NToCC(convert(int,substring(REVERSE(@i),@k,1)))+""千""
if @k=7
set @r=@r+dbo.NToCC(convert(int,substring(REVERSE(@i),@k,1)))+""佰""
if @k=6
set @r=@r+dbo.NToCC(convert(int,substring(REVERSE(@i),@k,1)))+""拾""
if @k=5
set @r=@r+dbo.NToCC(convert(int,substring(REVERSE(@i),@k,1)))+""万""
if @k=4
set @r=@r+dbo.NToCC(convert(int,substring(REVERSE(@i),@k,1)))+""千""
if @k=3
set @r=@r+dbo.NToCC(convert(int,substring(REVERSE(@i),@k,1)))+""佰""
if @k=2
set @r=@r+dbo.NToCC(convert(int,substring(REVERSE(@i),@k,1)))+""拾""
if @k=1
set @r=@r+dbo.NToCC(convert(int,substring(REVERSE(@i),@k,1)))+""元""
set @k=@k-1
end
if convert(float,@f)=0
set @r=@r+""整""
else
begin
if substring(@s,1,1)>""""
set @r=@r+dbo.NToCC(convert(int,substring(@f,1,1)))+""角""
if substring(@s,2,1)>""""
set @r=@r+dbo.NToCC(convert(int,substring(@f,2,1)))+""分""
end