SQL,SERVER函数将人民币数字转换成大写形式_人民币书写规则

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