sql server數字小寫人民幣轉換成大寫人民幣(兩種方式)


         

  一

create function UpperRMB(@num numeric(14,2))  

  1. returns @rmb table(  
  2.      億  varchar(2)  
  3.     ,仟萬 varchar(2)  
  4.     ,佰萬 varchar(2)  
  5.     ,拾萬 varchar(2)  
  6.     ,萬      varchar(2)  
  7.     ,仟      varchar(2)  
  8.     ,佰      varchar(2)  
  9.     ,拾      varchar(2)  
  10.     ,元      varchar(2)  
  11.     ,角      varchar(2)  
  12.     ,分      varchar(2))  
  13. as  
  14. begin  
  15. insert into @rmb  
  16. select   
  17.     (case 億1            
  18. when 0 then '零'            
  19. when 1 then '壹'            
  20. when 2 then '貳'            
  21. when 3 then '叄'            
  22. when 4 then '肆'            
  23. when 5 then '伍'            
  24. when 6 then '陸'            
  25. when 7 then '柒'            
  26. when 8 then '捌'            
  27. when 9 then '玖'  
  28. else '' end) as 億,    
  29.     (case 仟萬1            
  30. when 0 then '零'            
  31. when 1 then '壹'            
  32. when 2 then '貳'            
  33. when 3 then '叄'            
  34. when 4 then '肆'            
  35. when 5 then '伍'            
  36. when 6 then '陸'            
  37. when 7 then '柒'            
  38. when 8 then '捌'            
  39. when 9 then '玖'  
  40. else '' end) as 仟萬,    
  41.     (case 佰萬1            
  42. when 0 then '零'            
  43. when 1 then '壹'            
  44. when 2 then '貳'            
  45. when 3 then '叄'            
  46. when 4 then '肆'            
  47. when 5 then '伍'            
  48. when 6 then '陸'            
  49. when 7 then '柒'            
  50. when 8 then '捌'            
  51. when 9 then '玖'   
  52. else '' end) as 佰萬,      
  53.     (case 拾萬1            
  54. when 0 then '零'            
  55. when 1 then '壹'            
  56. when 2 then '貳'            
  57. when 3 then '叄'            
  58. when 4 then '肆'            
  59. when 5 then '伍'            
  60. when 6 then '陸'            
  61. when 7 then '柒'            
  62. when 8 then '捌'            
  63. when 9 then '玖'   
  64. else '' end) as 拾萬,             
  65.     (case 萬1            
  66. when 0 then '零'            
  67. when 1 then '壹'            
  68. when 2 then '貳'            
  69. when 3 then '叄'            
  70. when 4 then '肆'            
  71. when 5 then '伍'            
  72. when 6 then '陸'            
  73. when 7 then '柒'            
  74. when 8 then '捌'            
  75. when 9 then '玖'   
  76. else '' end) as 萬,            
  77.     (case 仟1            
  78. when 0 then '零'            
  79. when 1 then '壹'            
  80. when 2 then '貳'            
  81. when 3 then '叄'            
  82. when 4 then '肆'            
  83. when 5 then '伍'            
  84. when 6 then '陸'            
  85. when 7 then '柒'            
  86. when 8 then '捌'            
  87. when 9 then '玖'   
  88. else '' end) as 仟,            
  89.     (case 佰1            
  90. when 0 then '零'            
  91. when 1 then '壹'            
  92. when 2 then '貳'            
  93. when 3 then '叄'            
  94. when 4 then '肆'            
  95. when 5 then '伍'            
  96. when 6 then '陸'            
  97. when 7 then '柒'            
  98. when 8 then '捌'            
  99. when 9 then '玖'   
  100. else '' end) as 佰,            
  101.     (case 拾1            
  102. when 0 then '零'            
  103. when 1 then '壹'            
  104. when 2 then '貳'            
  105. when 3 then '叄'            
  106. when 4 then '肆'            
  107. when 5 then '伍'            
  108. when 6 then '陸'            
  109. when 7 then '柒'            
  110. when 8 then '捌'            
  111. when 9 then '玖'   
  112. else '' end) as 拾,            
  113.     (case 元1            
  114. when 0 then '零'            
  115. when 1 then '壹'            
  116. when 2 then '貳'            
  117. when 3 then '叄'            
  118. when 4 then '肆'            
  119. when 5 then '伍'            
  120. when 6 then '陸'            
  121. when 7 then '柒'            
  122. when 8 then '捌'            
  123. when 9 then '玖'   
  124. else '' end) as 元,            
  125.     (case 角1            
  126. when 0 then '零'            
  127. when 1 then '壹'            
  128. when 2 then '貳'            
  129. when 3 then '叄'            
  130. when 4 then '肆'            
  131. when 5 then '伍'            
  132. when 6 then '陸'            
  133. when 7 then '柒'            
  134. when 8 then '捌'            
  135. when 9 then '玖'   
  136. else '' end) as 角,            
  137.     (case 分1            
  138. when 0 then '零'            
  139. when 1 then '壹'            
  140. when 2 then '貳'            
  141. when 3 then '叄'            
  142. when 4 then '肆'            
  143. when 5 then '伍'            
  144. when 6 then '陸'            
  145. when 7 then '柒'            
  146. when 8 then '捌'            
  147. when 9 then '玖'   
  148. else '' end) as 分      
  149. from (       
  150. select   
  151. case when len(ltrim(str(@num*100,14)))>=11   
  152. then convert(varchar(10),left(right(ltrim(str(@num*100,14)),11),1) ) else null end as 億1,  
  153. case when len(ltrim(str(@num*100,14)))>=10   
  154. then convert(varchar(10),left(right(ltrim(str(@num*100,14)),10),1) ) else null end as 仟萬1,  
  155. case when len(ltrim(str(@num*100,14)))>=9   
  156. then convert(varchar(10),left(right(ltrim(str(@num*100,14)),9),1) ) else null end as 佰萬1,    
  157. case when len(ltrim(str(@num*100,14)))>=8   
  158. then convert(varchar(10),left(right(ltrim(str(@num*100,14)),8),1) ) else null end as 拾萬1,       
  159. case when len(ltrim(str(@num*100,14)))>=7   
  160. then convert(varchar(10),left(right(ltrim(str(@num*100,14)),7),1) ) else null end as 萬1,            
  161. case when len(ltrim(str(@num*100,14)))>=6   
  162. then convert(varchar(10),left(right(ltrim(str(@num*100,14)),6),1) ) else null end as 仟1,            
  163. case when len(ltrim(str(@num*100,14)))>=5   
  164. then convert(varchar(10),left(right(ltrim(str(@num*100,14)),5),1) ) else null end as 佰1,            
  165. case when len(ltrim(str(@num*100,14)))>=4   
  166. then convert(varchar(10),left(right(ltrim(str(@num*100,14)),4),1) ) else null end as 拾1,            
  167. case when len(ltrim(str(@num*100,14)))>=3   
  168. then convert(varchar(10),left(right(ltrim(str(@num*100,14)),3),1) ) else null end as 元1,            
  169. case when len(ltrim(str(@num*100,14)))>=2   
  170. then convert(varchar(10),left(right(ltrim(str(@num*100,14)),2),1) ) else null end as 角1,            
  171. case when len(ltrim(str(@num*100,14)))>=1   
  172. then convert(varchar(10),left(right(ltrim(str(@num*100,14)),1),1) ) else null end as 分1      
  173.  ) kk  
  174. return  
  175. end  
  176. /*  
  177. select * from upperrmb(123456789.12)  
  178. select 億+'億'+仟萬+'仟'+佰萬+'佰'+拾萬+'拾'+萬+'萬'+仟+'仟'+佰+'佰'+拾+'拾'+元+'元'+角+'角'+分+'分' AS [人民幣大寫]   
  179. from upperrmb(123456789.12)  
  180. --其實單位也可以在函數內設定  
  181. */  

 


 
    1. CREATE function dbo.toUppercaseRMB ( @LowerMoney decimal(18,4))  
    2. returns varchar(200)   
    3. as      
    4. begin      
    5.    declare @lowerStr varchar(200)      
    6.    declare @UpperStr varchar(200)      
    7.    declare @UpperPart varchar(200)     --長度      
    8.    declare @i int       
    9.          
    10.    set @lowerStr=ltrim(rtrim(convert(decimal(18,2),round(@LowerMoney,2))))      
    11.    set @i=1      
    12.    set @UpperStr=''      
    13.          
    14.    while(@i<=len(@lowerStr))      
    15.    begin      
    16.         select @UpperPart=  
    17.         case substring(@lowerStr,len(@lowerStr)-@i+1,1)--取最后一位數  
    18.             when  '.' then '元'      
    19.             when  '0' then '零'      
    20.             when  '1' then '壹'      
    21.             when  '2' then '貳'      
    22.             when  '3' then '叄'      
    23.             when  '4' then '肆'      
    24.             when  '5' then '伍'      
    25.             when  '6' then '陸'      
    26.             when  '7' then '柒'      
    27.             when  '8' then '捌'      
    28.             when  '9' then '玖'      
    29.         end      
    30.         +      
    31.         case @i       
    32.             when 1 then  '分'      
    33.             when 2 then  '角'      
    34.             when 3 then  ''      
    35.             when 4 then  ''      
    36.             when 5 then  '拾'      
    37.             when 6 then  '佰'      
    38.             when 7 then  '仟'      
    39.             when 8 then  '萬'      
    40.             when 9 then  '拾'      
    41.             when 10 then '佰'      
    42.             when 11 then '仟'      
    43.             when 12 then '億'      
    44.             when 13 then '拾'      
    45.             when 14 then '佰'      
    46.             when 15 then '仟'      
    47.             when 16 then '萬'      
    48.             else ''      
    49.         end      
    50.         set @UpperStr=@UpperPart+@UpperStr      
    51.         set @i=@i+1      
    52.     end       
    53.     set @UpperStr = REPLACE(@UpperStr,'零拾','零')       
    54.     set @UpperStr = REPLACE(@UpperStr,'零佰','零')       
    55.     set @UpperStr = REPLACE(@UpperStr,'零仟零佰零拾','零')       
    56.     set @UpperStr  = REPLACE(@UpperStr,'零仟','零')      
    57.     set @UpperStr = REPLACE(@UpperStr,'零零零','零')      
    58.     set @UpperStr = REPLACE(@UpperStr,'零零','零')      
    59.     set @UpperStr = REPLACE(@UpperStr,'零角零分','')      
    60.     set @UpperStr = REPLACE(@UpperStr,'零分','')      
    61.     set @UpperStr = REPLACE(@UpperStr,'零角','零')      
    62.     set @UpperStr = REPLACE(@UpperStr,'零億零萬零元','億元')      
    63.     set @UpperStr = REPLACE(@UpperStr,'億零萬零元','億元')      
    64.     set @UpperStr = REPLACE(@UpperStr,'零億零萬','億')      
    65.     set @UpperStr = REPLACE(@UpperStr,'零萬零元','萬元')      
    66.     set @UpperStr = REPLACE(@UpperStr,'萬零元','萬元')      
    67.     set @UpperStr = REPLACE(@UpperStr,'零億','億')      
    68.     set @UpperStr = REPLACE(@UpperStr,'零萬','萬')      
    69.     set @UpperStr = REPLACE(@UpperStr,'零元','元')      
    70.     set @UpperStr = REPLACE(@UpperStr,'零零','零')      
    71.     if left(@UpperStr,1)='元'      
    72.         set @UpperStr = REPLACE(@UpperStr,'元','零元')      
    73.   
    74.   return @UpperStr+'整'      
    75. end      
    76.   
    77. --      SELECT DBO.TOUPPERCASERMB(123456.789)  


免責聲明!

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



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