sql 數字轉人民幣大寫函數(兩種方法)


  create function UpperRMB(@num numeric(14,2))
 returns @rmb table(
     億    varchar(2)
    ,仟萬    varchar(2)
    ,佰萬    varchar(2)
    ,拾萬    varchar(2)
    ,萬        varchar(2)
    ,仟        varchar(2)
    ,佰        varchar(2)
    ,拾        varchar(2)
    ,元        varchar(2)
    ,角        varchar(2)
    ,分        varchar(2))
 as
 begin
 insert into @rmb
 select 
    (case 億1          
        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 ''
        else '' end) as 億,  
    (case 仟萬1          
        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 ''
        else '' end) as 仟萬,  
    (case 佰萬1          
        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 '' 
        else '' end) as 佰萬,    
    (case 拾萬1          
        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 '' 
        else '' end) as 拾萬,           
    (case 萬1          
        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 '' 
        else '' end) as 萬,          
    (case 仟1          
        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 '' 
        else '' end) as 仟,          
    (case 佰1          
        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 '' 
        else '' end) as 佰,          
    (case 拾1          
        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 '' 
        else '' end) as 拾,          
    (case 元1          
        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 '' 
        else '' end) as 元,          
    (case 角1          
        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 '' 
        else '' end) as 角,          
    (case 分1          
        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 '' 
        else '' end) asfrom (     
 select 
    case when len(ltrim(str(@num*100,14)))>=11 
        then convert(varchar(10),left(right(ltrim(str(@num*100,14)),11),1) ) else null end as 億1,
    case when len(ltrim(str(@num*100,14)))>=10 
        then convert(varchar(10),left(right(ltrim(str(@num*100,14)),10),1) ) else null end as 仟萬1,
    case when len(ltrim(str(@num*100,14)))>=9 
        then convert(varchar(10),left(right(ltrim(str(@num*100,14)),9),1) ) else null end as 佰萬1,  
    case when len(ltrim(str(@num*100,14)))>=8 
        then convert(varchar(10),left(right(ltrim(str(@num*100,14)),8),1) ) else null end as 拾萬1,     
    case when len(ltrim(str(@num*100,14)))>=7 
        then convert(varchar(10),left(right(ltrim(str(@num*100,14)),7),1) ) else null end as 萬1,          
    case when len(ltrim(str(@num*100,14)))>=6 
        then convert(varchar(10),left(right(ltrim(str(@num*100,14)),6),1) ) else null end as 仟1,          
    case when len(ltrim(str(@num*100,14)))>=5 
        then convert(varchar(10),left(right(ltrim(str(@num*100,14)),5),1) ) else null end as 佰1,          
    case when len(ltrim(str(@num*100,14)))>=4 
        then convert(varchar(10),left(right(ltrim(str(@num*100,14)),4),1) ) else null end as 拾1,          
    case when len(ltrim(str(@num*100,14)))>=3 
        then convert(varchar(10),left(right(ltrim(str(@num*100,14)),3),1) ) else null end as 元1,          
    case when len(ltrim(str(@num*100,14)))>=2 
        then convert(varchar(10),left(right(ltrim(str(@num*100,14)),2),1) ) else null end as 角1,          
    case when len(ltrim(str(@num*100,14)))>=1 
        then convert(varchar(10),left(right(ltrim(str(@num*100,14)),1),1) ) else null end as 分1    
 ) kk
 return
 end
 
/*
select * from upperrmb(123456789.12)

select 億+'億'+仟萬+'仟'+佰萬+'佰'+拾萬+'拾'+萬+'萬'+仟+'仟'+佰+'佰'+拾+'拾'+元+'元'+角+'角'+分+'分' AS [人民幣大寫] 
from upperrmb(123456789.12)

--其實單位也可以在函數內設定
*/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM