求教本人没学过SQL2000,但是老总要让我做个表,然后最后合计大写,可数据字典里没有这个,我想问一下,怎么添加到数据库里,然后怎么可以调用数据库里到数据字典里,本人纯小白!!!希望各位大虾救命!

解决方案 »

  1.   

    CREATE  FUNCTION [dbo].[f_num_chn] (@num numeric(14,5))   
    RETURNS varchar(100) WITH ENCRYPTION   
    AS   
    BEGIN   
    --版权所有:[email protected]   
      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
    begindeclare @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=@sset @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-1endif convert(float,@f)=0 
    set @r=@r+''整''
    else 
    beginif 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)))+''分''endset @r=replace(@r,''零千零佰零拾'',''零'')
    set @r=replace(@r,''零佰零拾'',''零'')
    set @r=replace(@r,''零千零佰'',''零'')
    set @r=replace(@r,''零拾'',''零'')
    set @r=replace(@r,''零千'',''零'')
    set @r=replace(@r,''零佰'',''零'')
    set @r=replace(@r,''拾零万'',''拾万'')
    return @rend--     select dbo.numbertoChineseBigString(100102)文章出处:http://www.diybl.com/course/7_databases/sql/sqlServer/2008224/101116.htmlCREATE FUNCTION dbo.L2U(@n_LowerMoney numeric(15,2),@v_TransType int) RETURNS VARCHAR(200) AS BEGIN Declare @v_LowerStr VARCHAR(200) -- 小写金额 Declare @v_UpperPart VARCHAR(200) Declare @v_UpperStr VARCHAR(200) -- 大写金额Declare @i_I intset @v_LowerStr = LTRIM(RTRIM(ROUND(@n_LowerMoney,2))) --四舍五入为指定的精度并删除数据左右空格set @i_I = 1set @v_UpperStr = ''while ( @i_I <= len(@v_LowerStr))beginselect @v_UpperPart = case substring(@v_LowerStr,len(@v_LowerStr) - @i_I + 1,1)WHEN '.' THEN '元'WHEN '0' THEN '零'WHEN '1' THEN '壹'WHEN '2' THEN '贰'WHEN '3' THEN '叁'WHEN '4' THEN '肆'WHEN '5' THEN '伍'WHEN '6' THEN '陆'WHEN '7' THEN '柒'WHEN '8' THEN '捌'WHEN '9' THEN '玖'END+ case @i_IWHEN 1 THEN '分'WHEN 2 THEN '角'WHEN 3 THEN ''WHEN 4 THEN ''WHEN 5 THEN '拾'WHEN 6 THEN '佰'WHEN 7 THEN '仟'WHEN 8 THEN '万'WHEN 9 THEN '拾'WHEN 10 THEN '佰'WHEN 11 THEN '仟'WHEN 12 THEN '亿'WHEN 13 THEN '拾'WHEN 14 THEN '佰'WHEN 15 THEN '仟'WHEN 16 THEN '万'ELSE ''ENDset @v_UpperStr = @v_UpperPart + @v_UpperStrset @i_I = @i_I + 1endif ( 0 = @v_TransType)beginset @v_UpperStr = REPLACE(@v_UpperStr,'零拾','零') set @v_UpperStr = REPLACE(@v_UpperStr,'零佰','零') set @v_UpperStr = REPLACE(@v_UpperStr,'零仟','零') set @v_UpperStr = REPLACE(@v_UpperStr,'零零零','零')set @v_UpperStr = REPLACE(@v_UpperStr,'零零','零')set @v_UpperStr = REPLACE(@v_UpperStr,'零角零分','整')set @v_UpperStr = REPLACE(@v_UpperStr,'零分','整')set @v_UpperStr = REPLACE(@v_UpperStr,'零角','零')set @v_UpperStr = REPLACE(@v_UpperStr,'零亿零万零元','亿元')set @v_UpperStr = REPLACE(@v_UpperStr,'亿零万零元','亿元')set @v_UpperStr = REPLACE(@v_UpperStr,'零亿零万','亿')set @v_UpperStr = REPLACE(@v_UpperStr,'零万零元','万元')set @v_UpperStr = REPLACE(@v_UpperStr,'万零元','万元')set @v_UpperStr = REPLACE(@v_UpperStr,'零亿','亿')set @v_UpperStr = REPLACE(@v_UpperStr,'零万','万')set @v_UpperStr = REPLACE(@v_UpperStr,'零元','元')set @v_UpperStr = REPLACE(@v_UpperStr,'零零','零')end-- 对壹元以下的金额的处理 if ( '元' = substring(@v_UpperStr,1,1))beginset @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))endif ( '零' = substring(@v_UpperStr,1,1))beginset @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))endif ( '角' = substring(@v_UpperStr,1,1))beginset @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))endif ( '分' = substring(@v_UpperStr,1,1))beginset @v_UpperStr = substring(@v_UpperStr,2,(len(@v_UpperStr) - 1))endif ('整' = substring(@v_UpperStr,1,1))beginset @v_UpperStr = '零元整'endreturn @v_UpperStrEND
      

  2.   

    CREATE  FUNCTION [dbo].[f_num_chn] (@num numeric(14,5))   
    RETURNS varchar(100) WITH ENCRYPTION   
    AS   
    BEGIN   
    --版权所有:[email protected]   
      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   
    --调用方法:
    select dbo.f_num_chn(23123456.5567)
    /*
    ----------------------------------------------------------------------------------------------------
    贰仟叁佰壹拾贰万叁仟肆佰伍拾陆圆伍角伍分(1 行受影响)
    */
    select dbo.f_num_chn(231)
    /*
    ----------------------------------------------------------------------------------------------------
    贰佰叁拾壹圆整(1 行受影响)
    */补充调用方法
      

  3.   

    上面都写啦我来个C#版本的啊
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;/// <summary>
    ///Class1 的摘要说明
    /// </summary>
    public class Class1
    {
    public Class1()
    {
    //
    //TODO: 在此处添加构造函数逻辑
    //
    }
        public static string ConvertToCn(decimal num)
        {
                string str1 = "零壹贰叁肆伍陆柒捌玖";            //0-9所对应的汉字 
                string str2 = "万仟佰拾亿仟佰拾万仟佰拾元角分"; //数字位所对应的汉字 
                string str3 = "";    //从原num值中取出的值 
                string str4 = "";    //数字的字符串形式 
                string str5 = "";  //人民币大写金额形式 
                int i;    //循环变量 
                int j;    //num的值乘以100的字符串长度 
                string ch1 = "";    //数字的汉语读法 
                string ch2 = "";    //数字位的汉字读法 
                int nzero = 0;  //用来计算连续的零值是几个 
                int temp;            //从原num值中取出的值             num = Math.Round(Math.Abs(num), 2);    //将num取绝对值并四舍五入取2位小数 
                str4 = ((long)(num * 100)).ToString();        //将num乘100并转换成字符串形式 
                j = str4.Length;      //找出最高位 
                if (j > 15) { return "溢出"; }
                str2 = str2.Substring(15 - j);   //取出对应位数的str2的值。如:200.55,j为5所以str2=佰拾元角分             //循环取出每一位需要转换的值 
                for (i = 0; i < j; i++)
                {
                    str3 = str4.Substring(i, 1);          //取出需转换的某一位的值 
                    temp = Convert.ToInt32(str3);      //转换为数字 
                    if (i != (j - 3) && i != (j - 7) && i != (j - 11) && i != (j - 15))
                    {
                        //当所取位数不为元、万、亿、万亿上的数字时 
                        if (str3 == "0")
                        {
                            ch1 = "";
                            ch2 = "";
                            nzero = nzero + 1;
                        }
                        else
                        {
                            if (str3 != "0" && nzero != 0)
                            {
                                ch1 = "零" + str1.Substring(temp * 1, 1);
                                ch2 = str2.Substring(i, 1);
                                nzero = 0;
                            }
                            else
                            {
                                ch1 = str1.Substring(temp * 1, 1);
                                ch2 = str2.Substring(i, 1);
                                nzero = 0;
                            }
                        }
                    }
                    else
                    {
                        //该位是万亿,亿,万,元位等关键位 
                        if (str3 != "0" && nzero != 0)
                        {
                            ch1 = "零" + str1.Substring(temp * 1, 1);
                            ch2 = str2.Substring(i, 1);
                            nzero = 0;
                        }
                        else
                        {
                            if (str3 != "0" && nzero == 0)
                            {
                                ch1 = str1.Substring(temp * 1, 1);
                                ch2 = str2.Substring(i, 1);
                                nzero = 0;
                            }
                            else
                            {
                                if (str3 == "0" && nzero >= 3)
                                {
                                    ch1 = "";
                                    ch2 = "";
                                    nzero = nzero + 1;
                                }
                                else
                                {
                                    if (j >= 11)
                                    {
                                        ch1 = "";
                                        nzero = nzero + 1;
                                    }
                                    else
                                    {
                                        ch1 = "";
                                        ch2 = str2.Substring(i, 1);
                                        nzero = nzero + 1;
                                    }
                                }
                            }
                        }
                    }
                    if (i == (j - 11) || i == (j - 3))
                    {
                        //如果该位是亿位或元位,则必须写上 
                        ch2 = str2.Substring(i, 1);
                    }
                    str5 = str5 + ch1 + ch2;                if (i == j - 1 && str3 == "0")
                    {
                        //最后一位(分)为0时,加上“整” 
                        str5 = str5 + '整';
                    }
                }
                if (num == 0)
                {
                    str5 = "零元整";
                }
                return str5;
            }
            public static string ConvertToCn(string numstr)
            {
                decimal num = 0;
                if (decimal.TryParse(numstr, out num))
                {
                    return ConvertToCn(num);
                }
                else
                {
                    return "非数字形式!";
                }
            }
    }