能把1234567.89 比如函数名字是MoneyToFinance
然后能 select MoneyToFinance(1234567.89)
的结果是 1,234,567.89的这种,

解决方案 »

  1.   

    以前用过的一个,你看看吧,不一定好使,但是我觉得可以参考一下
    CREATE FUNCTION MoneyToFinance
    (@mon NUMERIC(18,5))  
    RETURNS VarChar(100) AS   BEGIN 
    declare @returnvalue varchar(100)
    select @returnvalue='' --  返回值
    declare @zhengshu numeric(18,5)
    declare @canshuzhengfu numeric (18,5)
    select  @canshuzhengfu=@mon

    if @canshuzhengfu<0
       select @mon =abs(@mon)      declare     @str    varchar(3)  --记录包括小数点后面的三个字符,比如 3.21中的.21
    declare @str1    varchar(3) --  个十百
    declare @str2 varchar(3) -- 千万十万
    declare @str3 varchar(3)      -- 百万,千万,亿
    --     返回值
    declare @canshu varchar(20)
    declare @pos int --小数点的为止
    declare @zhengshuzhi varchar(10)
    declare @zhengshuwei int
    select  @str =''
    select  @str1=''
    select  @str2=''
    select  @str3=''

    select  @canshu=cast(@mon as varchar(20))   --  把参数转换为字符串
    select @pos=charindex('.',@canshu)
    select  @str=substring(@canshu,@pos,4) --现在就把小数点后面那几位存在这个地方了
    select @zhengshuzhi=cast (cast(@mon as int) as varchar(10) )  --字符型
    select @zhengshuwei=len(@zhengshuzhi) -- 整型

    if @zhengshuwei=1
    select @returnvalue=cast(@mon as varchar(20))
    if @zhengshuwei=2
    select @returnvalue=cast(@mon as varchar(20))
    if @zhengshuwei=3
    select @returnvalue=cast(@mon as varchar(20))
    if @zhengshuwei>3 and @zhengshuwei<7
    begin
      select @str1=substring(@zhengshuzhi,@zhengshuwei-3+1,@zhengshuwei)
      select @returnvalue=substring(@zhengshuzhi,1,@zhengshuwei-3)+','+@str1+@str
    end
    if @zhengshuwei>=7 and @zhengshuwei<10
    begin
      select @str1=substring(@zhengshuzhi,@zhengshuwei-3+1,@zhengshuwei)
      select @str2=substring(@zhengshuzhi,@zhengshuwei-6+1,@zhengshuwei-3)
      select @str3=substring(@zhengshuzhi,1,@zhengshuwei-6)
      select @returnvalue=@str3+','+@str2+','+@str1+@str
    end
    if  @canshuzhengfu<0
    select @returnvalue='-'+@returnvalue
        return @Returnvalue
    ENDGO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO
      

  2.   

    查询sql 可以用自定义函数的吗?
      

  3.   

    没想到这么快,我try过了,的确好使,谢谢了,哈哈
      

  4.   

    int amount = 54321;
      NumberFormat myformat = NumberFormat.getInstance();//system format
      System.out.println(myformat.format(amount));
    这样就可以了,是基本类可以直接用