SQL SERVER函数将人民币数字转换成大写形式

WBOY
풀어 주다: 2016-06-07 16:22:22
원래의
2003명이 탐색했습니다.

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(S

   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

  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 (@i4) and (@i8) and (@i12))

  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

  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

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!