給定數字生成中文數字(MySQL)

壹頁書發表於2017-08-07
接前文
http://blog.itpub.net/29254281/viewspace-2143103/

用MySQL實現

  1. CREATE TABLE `nums` (  
  2.   `id` int(11) NOT NULL,  
  3.   PRIMARY KEY (`id`)  
  4. ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4  
  5.   
  6. INSERT INTO `nums` (`id`) VALUES (1);  
  7. INSERT INTO `nums` (`id`) VALUES (2);  
  8. INSERT INTO `nums` (`id`) VALUES (3);  
  9. INSERT INTO `nums` (`id`) VALUES (4);  
  10. INSERT INTO `nums` (`id`) VALUES (5);  
  11. INSERT INTO `nums` (`id`) VALUES (6);  
  12. INSERT INTO `nums` (`id`) VALUES (7);  
  13. INSERT INTO `nums` (`id`) VALUES (8);  
  14. INSERT INTO `nums` (`id`) VALUES (9);  
  15. INSERT INTO `nums` (`id`) VALUES (10);  
  16. INSERT INTO `nums` (`id`) VALUES (11);  
  17. INSERT INTO `nums` (`id`) VALUES (12);  
  18. INSERT INTO `nums` (`id`) VALUES (13);  
  19. INSERT INTO `nums` (`id`) VALUES (14);  
  20. INSERT INTO `nums` (`id`) VALUES (15);  
  21. INSERT INTO `nums` (`id`) VALUES (16);  
  22. INSERT INTO `nums` (`id`) VALUES (17);  
  23. INSERT INTO `nums` (`id`) VALUES (18);  
  24. INSERT INTO `nums` (`id`) VALUES (19);  
  25. INSERT INTO `nums` (`id`) VALUES (20); 

和程式的處理,基本上都是一樣的思路.

  1. select group_concat( target order by id desc Separator '')  result from (  
  2.     select   
  3.     concat(  
  4.     case s   
  5.     when 0 then if(@lastrow!=0,'零','')   
  6.     when 1 then '一'   
  7.     when 2 then '二'   
  8.     when 3 then '三'   
  9.     when 4 then '四'   
  10.     when 5 then '五'   
  11.     when 6 then '六'   
  12.     when 7 then '七'   
  13.     when 8 then '八'   
  14.     when 9 then '九'  
  15.     end ,  
  16.     case   (id-1) mod 4  when 0 then ''  
  17.     when 1 then if(s!=0,'十','')  
  18.     when 2 then if(s!=0,'百','')  
  19.     when 3 then if(s!=0,'千','')  
  20.     end,  
  21.     case ((id-1)/4) when 1 then '萬'  
  22.     when 2 then '億'  
  23.     else ''  
  24.     end  
  25.     ) target  
  26.     ,  
  27.     @lastrow:=s  
  28.     ,  
  29.     a.*  
  30.     from (  
  31.         select var.n,nums.id,substring(var.n,length(var.n)-id+1,1) s from (  
  32.             select 30150000 n,@lastrow:=null  
  33.         ) var ,nums where length(var.n)>=nums.id  
  34.     ) a  
  35. )b 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2143185/,如需轉載,請註明出處,否則將追究法律責任。

相關文章