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)
    
    --其实单位也可以在函数内设定
    */
  • 相关阅读:
    Windows开发,关于通过写代码加载PDB的那些事
    从FreeBSD里面看到的网络协议列表,感觉可以保存一下
    听了几段《双投唐》
    ReactOS 无法显示中文的问题
    ReactOS 代码更新后的编译安装
    都什么年代了,怎么还那种德行
    假冒不伪劣
    ollvm 使用——“Cannot open /dev/random”错误的解决方法
    ollvm 编译
    C/C++ 吐槽第一期:你最讨厌的C/C++里面的数据类型是什么
  • 原文地址:https://www.cnblogs.com/accumulater/p/6225657.html
Copyright © 2011-2022 走看看