程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL SERVER函數將人民幣數字轉換成大寫形式

SQL SERVER函數將人民幣數字轉換成大寫形式

編輯:關於SqlServer

       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

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved