2015年6月18日

SQL 数字金额转为英文形式

摘录自 http://blog.sina.com.cn/s/blog_43ad83920100nkfp.html

 

  1 IF EXISTS ( SELECT  *
  2             FROM    SYS.OBJECTS
  3             WHERE   NAME LIKE 'F_NUM_ENG'
  4                     AND TYPE = 'FN' )
  5     DROP FUNCTION F_NUM_ENG
  6  GO
  7 CREATE FUNCTION [DBO].[F_NUM_ENG] ( @NUM NUMERIC(15, 2) )
  8 RETURNS VARCHAR(400)
  9 AS
 10     BEGIN
 11         DECLARE @I INT ,
 12             @HUNDREDS INT ,
 13             @TENTH INT ,
 14             @ONE INT
 15         DECLARE @THOUSAND INT ,
 16             @MILLION INT ,
 17             @BILLION INT
 18         DECLARE @NUMBERS VARCHAR(400) ,
 19             @S VARCHAR(15) ,
 20             @RESULT VARCHAR(400)
 21         SET @NUMBERS = 'ONE       TWO       THREE     FOUR      FIVE      '
 22             + 'SIX       SEVEN     EIGHT     NINE      TEN       '
 23             + 'ELEVEN    TWELVE    THIRTEEN  FOURTEEN  FIFTEEN   '
 24             + 'SIXTEEN   SEVENTEEN EIGHTEEN  NINETEEN  '
 25             + 'TWENTY    THIRTY    FORTY     FIFTY     '
 26             + 'SIXTY     SEVENTY   EIGHTY    NINETY    '
 27         SET @S = RIGHT('000000000000000' + CAST(@NUM AS VARCHAR(15)), 15)
 28         SET @BILLION = CAST(SUBSTRING(@S, 1, 3) AS INT)--将12位整数分成4段:十亿、百万、千、百十个
 29         SET @MILLION = CAST(SUBSTRING(@S, 4, 3) AS INT)
 30         SET @THOUSAND = CAST(SUBSTRING(@S, 7, 3) AS INT)
 31         SET @RESULT = ''
 32         SET @I = 0
 33         WHILE @I <= 3
 34             BEGIN
 35                 SET @HUNDREDS = CAST(SUBSTRING(@S, @I * 3 + 1, 1) AS INT)--百位0-9
 36                 SET @TENTH = CAST(SUBSTRING(@S, @I * 3 + 2, 1) AS INT)
 37                 SET @ONE = ( CASE @TENTH
 38                                WHEN 1 THEN 10
 39                                ELSE 0
 40                              END ) + CAST(SUBSTRING(@S, @I * 3 + 3, 1) AS INT)--个位0-19
 41                 SET @TENTH = ( CASE WHEN @TENTH <= 1 THEN 0
 42                                     ELSE @TENTH
 43                                END )--十位0、2-9
 44                 IF ( @I = 1
 45                      AND @BILLION > 0
 46                      AND ( @MILLION > 0
 47                            OR @THOUSAND > 0
 48                            OR @HUNDREDS > 0
 49                          )
 50                    )
 51                     OR ( @I = 2
 52                          AND ( @BILLION > 0
 53                                OR @MILLION > 0
 54                              )
 55                          AND ( @THOUSAND > 0
 56                                OR @HUNDREDS > 0
 57                              )
 58                        )
 59                     OR ( @I = 3
 60                          AND ( @BILLION > 0
 61                                OR @MILLION > 0
 62                                OR @THOUSAND > 0
 63                              )
 64                          AND ( @HUNDREDS > 0 )
 65                        )
 66                     SET @RESULT = @RESULT + ' '--百位不是0则每段之间加连接符,
 67                 IF ( @I = 3
 68                      AND ( @BILLION > 0
 69                            OR @MILLION > 0
 70                            OR @THOUSAND > 0
 71                          )
 72                      AND ( @HUNDREDS = 0
 73                            AND ( @TENTH > 0
 74                                  OR @ONE > 0
 75                                )
 76                          )
 77                    )
 78                     SET @RESULT = @RESULT + ' '--百位是0则加连接符AND
 79                 IF @HUNDREDS > 0
 80                     SET @RESULT = @RESULT + RTRIM(SUBSTRING(@NUMBERS,
 81                                                             @HUNDREDS * 10 - 9,
 82                                                             10)) + ' HUNDRED'
 83                 IF @TENTH >= 2
 84                     AND @TENTH <= 9
 85                     BEGIN
 86                         IF @HUNDREDS > 0
 87                             --SET @RESULT=@RESULT+' AND '
 88                             SET @RESULT = @RESULT + ' '
 89                         SET @RESULT = @RESULT + RTRIM(SUBSTRING(@NUMBERS,
 90                                                               @TENTH * 10
 91                                                               + 171, 10))
 92                     END
 93                 IF @ONE >= 1
 94                     AND @ONE <= 19
 95                     BEGIN
 96                         IF @TENTH > 0
 97                             SET @RESULT = @RESULT + '-'
 98                         ELSE
 99                             IF @HUNDREDS > 0
100                                 SET @RESULT = @RESULT + '  '
101                         SET @RESULT = @RESULT + RTRIM(SUBSTRING(@NUMBERS,
102                                                               @ONE * 10 - 9,
103                                                               10))
104                     END
105                 IF @I = 0
106                     AND @BILLION > 0
107                     SET @RESULT = @RESULT + ' BILLION'
108                 IF @I = 1
109                     AND @MILLION > 0
110                     SET @RESULT = @RESULT + ' MILLION'
111                 IF @I = 2
112                     AND @THOUSAND > 0
113                     SET @RESULT = @RESULT + ' THOUSAND'
114                 SET @I = @I + 1
115             END
116         IF SUBSTRING(@S, 14, 2) <> '00'
117             BEGIN
118                 SET @RESULT = @RESULT + ' AND '
119   
120                 SET @RESULT = @RESULT
121                     + REPLACE([DBO].[F_NUM_ENG](CAST(SUBSTRING(@S, 14, 2) AS INT)),
122                               'ONLY', ' CENTS ')
123             END  
124         SET @RESULT = UPPER(@RESULT) + ' ONLY'
125         RETURN(@RESULT)
126     END
127 GO
128 SELECT [DBO].[F_NUM_ENG](804.00)
129 SELECT [DBO].[F_NUM_ENG](804.54)

 

posted @ 2015-06-18 09:56 胡一凡 阅读(1122) 评论(0) 推荐(0)

2015年5月11日

C#控制台程序实现鼠标左右手习惯切换

摘要: 最近患上了鼠标手。比较疼,影响到了工作。 干脆左手用起了鼠标。每次都要到控制面板去修改设定比较繁琐 所以决定写个小工具。using System;using System.Collections.Generic;using System.Linq;using System.Text;using Sy... 阅读全文

posted @ 2015-05-11 11:12 胡一凡 阅读(371) 评论(0) 推荐(0)

2014年7月10日

C# 获取 IPv4地址

摘要: 网上搜罗了的代码 做了下改进。 B/S C/S 都能用。 1 private static string GetIP4Address() 2 { 3 string IP4Address = String.Empty; 4 5 if (... 阅读全文

posted @ 2014-07-10 16:02 胡一凡 阅读(789) 评论(0) 推荐(0)

2014年5月6日

SQL SERVER 读取 XML 数据

摘要: 1.需要读取的XML 格式: 1 2 3 4 9803009000 5 其他定制型软件 6 7 8 9 10 11 980300300012 定制型应用软件13 14 15 16 17 1... 阅读全文

posted @ 2014-05-06 10:07 胡一凡 阅读(1414) 评论(0) 推荐(0)

2014年4月14日

检查安装.NET Framework版本的 工具

摘要: 随手抄了一段微软的代码 小工具用于检查.net 版本下载地址:http://pan.baidu.com/s/1jGsmm2M效果:output.txtv2.0.50727 2.0.50727.4927 SP2v3.0 3.0.30729.4926 SP2v3.5 3.5.30729.4926 ... 阅读全文

posted @ 2014-04-14 15:42 胡一凡 阅读(245) 评论(0) 推荐(0)

2013年8月21日

C# 格式化字符 —— 首字母大写

摘要: 在网上搜罗了两种方式整理下1.单个词语1 System.Threading.Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(string str);2.句子Strings.StrConv("str.str.str str_str", VbStrConv.ProperCase, System.Globalization.CultureInfo.CurrentCulture.LCID);出处http://blog.csdn.net/a497785609/article/details/4479055http:// 阅读全文

posted @ 2013-08-21 13:42 胡一凡 阅读(1407) 评论(0) 推荐(0)

2013年7月24日

批量修改 SQL SERVER 数据

摘要: 批量修改表数据时 常常会遇到 约束的限制. 可采用 禁用 约束,批量修改数据,再启用约束的方式. 如有更好的方式 请大家补充!文章内的 SQL 语句是网上搜罗来的 ! 因当时没有记录出处, 还请原作谅解!1. 生成禁用约束语句1 SELECT 'ALTER TABLE [' + b.name + '] NOCHECK CONSTRAINT ' + a.name + ';' AS 禁用约束2 FROM sysobjects a ,3 sysobjects b4 WHERE a.xtype = 'f'5 AND a.parent_ob 阅读全文

posted @ 2013-07-24 13:50 胡一凡 阅读(823) 评论(0) 推荐(0)

2013年4月27日

C# 使用 WebClient 从Web 地址下载文件到本地.

摘要: 简单的下载方式.控制台测试代码如下: 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Net; 6 using System.Text; 7 8 namespace ConsoleApplication2 9 {10 class Program11 {12 static void Main(string[] args)13 {14 new WebClient... 阅读全文

posted @ 2013-04-27 16:31 胡一凡 阅读(535) 评论(0) 推荐(0)

2013年4月24日

除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

摘要: 除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。近日写SQL 多次遇到如上问题.才疏学浅,网上搜索了下. 按照错误提示 在句首添加 TOP 100 PERCENT解决. 例: SELECT TOP 100 PERCENT * FROM dbo.XXX如有知道问题成因,还请指点一番. 阅读全文

posted @ 2013-04-24 11:53 胡一凡 阅读(172) 评论(0) 推荐(0)

导航

点击右上角即可分享
微信分享提示