zoukankan      html  css  js  c++  java
  • 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)
    
    --其实单位也可以在函数内设定
    */
  • 相关阅读:
    你拿什么保护我的版权(写在中移动MM商用之前)
    体验Windows Mobile 6.5 (模拟器)
    Mobile Market试用后感受
    制作Windows Mobile程序安装包
    自定义.NET CF控件,美化Windows Mobile程序界面
    记《虞美人盛开的山坡》
    剑风传奇 黄金时代篇1:霸王之卵
    发现IGame中又一个大坑
    【翻译】【西川善司】3D图形的概念和渲染管线(5回完)
    【翻译】西川善司为了3D游戏粉丝的[生化危机5]图形讲座(后篇)
  • 原文地址:https://www.cnblogs.com/accumulater/p/6225657.html
Copyright © 2011-2022 走看看