`
xiaoer_1982
  • 浏览: 1815995 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

阿拉伯数字显示成英文

阅读更多
create function decodehundred(@hundredstring varchar(300) ) returns varchar(1000) as begin declare @tmp varchar(1000),@decodehundred varchar(1000) set @decodehundred = '' declare @strno1 varchar(1000) select @strno1 = 'One Two Three Four Five ' + 'Six Seven Eight Nine Ten ' + 'Eleven Twelve Thirteen Fourteen Fifteen '+ 'Sixteen Seventeen Eighteen Nineteen ' declare @strtens1 varchar(1000) set @strtens1 = 'Ten Twenty Thirty Forty Fifty ' + 'Sixty Seventy Eighty Ninety ' declare @unit4 varchar(10) set @unit4 = 'Hundred' if len(@hundredstring) > 0 and len(@hundredstring) <= 3 begin if len(@hundredstring) = 1 begin set @tmp = cast(@hundredstring as int) if @tmp <> 0 set @decodehundred = rtrim(substring(@strno1 ,(@tmp - 1) * 10 + 1,10)) end if len(@hundredstring) = 2 begin set @tmp = cast(@hundredstring as int) if @tmp <> 0 if @tmp < 20 if @tmp < 10 set @decodehundred = 'Zero '+rtrim(substring(@strno1 ,(@tmp - 1) * 10 + 1,10)) else set @decodehundred = rtrim(substring(@strno1 ,(@tmp - 1) * 10 + 1,10)) else if cast(right(@hundredstring, 1) as int ) = 0 set @decodehundred = rtrim(substring(@strtens1 ,(@tmp/10 - 1) * 10 + 1,10)) else set @decodehundred = rtrim(substring(@strtens1 ,(@tmp/10 - 1) * 10 + 1,10)) + '-' + rtrim(substring(@strno1 ,(cast(right(@hundredstring, 1) as int) -1) * 10 + 1,10)) end if len(@hundredstring) = 3 begin if cast(left(@hundredstring, 1) as int) <> 0 set @decodehundred = rtrim(substring(@strno1 ,(cast(left(@hundredstring, 1) as int)- 1) * 10 + 1,10)) + ' ' + @unit4 + ' ' + dbo.decodehundred(right(@hundredstring, 2)) else set @decodehundred = dbo.decodehundred(right(@hundredstring, 2)) end end return @decodehundred end go create function f_numbertostring(@number as numeric(12,2)) returns varchar(1000) as begin declare @str varchar(100), @beforepoint varchar(100), @afterpoint varchar(100), @tmpstr varchar(100),@numbertostring varchar(200) declare @point int,@nnumlen int declare @nbit integer declare @curstring varchar(100) set @numbertostring = '' declare @unit1 varchar(1000) set @unit1 = 'Thousand Million Billion Hundred Only Point * And ' set @str = cast(round(@number, 2) as varchar) if charindex('.', @str) = 0 begin set @beforepoint = @str set @afterpoint = '' end else begin begin set @beforepoint = left(@str, charindex('.', @str) - 1) set @afterpoint = right(@str, len(@str) - charindex('.', @str)) end if len(@beforepoint) > 12 begin set @numbertostring = 'Too big.' return @numbertostring end set @str = '' while len(@beforepoint) > 0 begin set @nnumlen = len(@beforepoint) if @nnumlen % 3 = 0 begin set @curstring = left(@beforepoint, 3) set @beforepoint = right(@beforepoint, @nnumlen - 3) end else begin set @curstring = left(@beforepoint, (@nnumlen % 3)) set @beforepoint = right(@beforepoint, @nnumlen - (@nnumlen % 3)) end set @nbit = len(@beforepoint) / 3 set @tmpstr = dbo.decodehundred(@curstring) if (@beforepoint = REPLICATE ('0',len(@beforepoint)) or @nbit = 0) and len(@curstring) = 3 if cast(left(@curstring, 1) as int) <> 0 and cast(right(@curstring, 2) as int) <> 0 set @tmpstr = left(@tmpstr,charindex('Hundred', @tmpstr) + len('Hundred')) + 'And ' + right(@tmpstr, len(@tmpstr) - (charindex('Hundred',@tmpstr ) + 7)) else if cast(left(@curstring, 1) as int) <> 0 and cast(right(@curstring, 2) as int) = 0 set @tmpstr = 'And ' + @tmpstr if @nbit = 0 set @str = ltrim(@str + ' ' + @tmpstr) else set @str = ltrim(@str + ' ' + @tmpstr + ' ' + rtrim(substring(@unit1 ,(@nbit - 1) * 10 + 1,10))) if left(@str, 3) = 'And' set @str = ltrim(right(@str, len(@str) - 3)) if @beforepoint = REPLICATE('0',len(@beforepoint)) break end set @beforepoint = replace( @str,'*',' ') if len(@afterpoint) > 0 set @afterpoint = 'Point' + ' ' + dbo.decodehundred(@afterpoint) + ' '-- + @unit7 else set @afterpoint = 'Only' set @numbertostring = replace(@beforepoint,'Zero','') + ' ' + @afterpoint end set @numbertostring = ltrim(rtrim(@numbertostring)) if right(@numbertostring,5) = 'point' set @numbertostring = replace(@numbertostring,'point','') return @numbertostring end go select dbo.f_numbertostring(12223.01) /* ------------------------------------ one hundred and twenty-three (所影响的行数为 1 行) */ select dbo.f_numbertostring(100001000) /* ------------------------------------ twelve thousand three hundred and one (所影响的行数为 1 行) */ drop function decodehundred,f_numbertostring


  


  
分享到:
评论

相关推荐

    Delphi实现数字与汉字的转换

    用Delphi实现数字与汉字的转换源码

    *5点阵显示数字(0-9),大小写字母(a-z;A-Z),汉字(大于等于5画或者有撇有捺)及希腊字母(22个常用的阿尔法,贝塔等等)

    5*5点阵显示数字(0-9),大小写字母(a-z;A-Z),汉字(大于等于5画或者有撇有捺)及希腊字母(22个常用的阿尔法,贝塔等等),显示外加OLED液晶显示与电脑上位机串口显示,4*4矩阵键盘输入与电脑上位机输入双重控制...

    java生成1000张图片,分别在每张图片上写阿拉伯数字1~1000

    java生成1000张图片,分别在每张图片上写阿拉伯数字1~1000。个人在测试网页显示图片的顺序需要用到带序号的图片,于是自己写了一个方法用java生成了1000张图片分别对应1000个阿拉伯数字

    LCD1602汉字显示讲解

    1602是一款最常用也是最便宜的...1602可以显示内部常用字符(包括阿拉伯数字,英文字母大小写,常用符号和日文假名等),也可以显示自定义字符(单或多个字符组成的简单汉字,符号,图案等,最多可以产生8个自定义字符)。

    pb数据窗口自动折行函数(打印时对编号、款号等英文数字没有空格时效果好,源码).zip

    pb数据窗口自动折行函数(打印时对编号、款号等英文数字没有空格时效果好,源码).zip

    1602液晶显示驱动

    单片机实训,本文通过设计一个液晶显示电路,可可显示英文、阿拉伯数字及其他图形等来练习使用LCD。

    8×8LED点阵显示汉

    点阵 LED 显示器是把一些 LED 组合在同一个...通常,若要显示阿拉伯数字、英文字母、特殊符号等,则可 采用 5×7 的点阵即可够用,若要显示中文字,则需要 4 片 8×8 的点阵组成 16×16 的点阵显示器才能显示一个中文字

    LED点阵显示屏(完整源程序版)

    本文设计一个16*64点阵模块控制器,根据标准的08控制接口要求,可以驱动市面上常见的16扫单色显示屏,显示汉字、英文、阿拉伯数字及其他信息等。整个系统提供很宽的外部扩展,包括时钟、温湿度、亮度等常规点阵控制...

    1602字符液晶 能够同时显示16x02即32个字符

    1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的...

    最完整的【ASCII 字符表】

    第二部分 由20H到7FH,共96个,这95个字符是用来表示阿拉伯数字、英文字母大小写和底线、括号等符号,都可以显示在屏幕上。 第三部分 由80H到0FFH,共128个字符,一般称为『扩充字符』,这 128 个扩充字符是由 IBM ...

    ascii码表文档

    第二部分是由 20H 到 7FH 共 96 个,这 95 个字符是用来表示阿拉伯数字、英文字母大小写和底线、括号等符号,都可以显示在屏幕上。如下表: 第三部分由 80H 到 0FFH 共 128 个字符,一般称为『扩充字符』,这 128 个...

    ASCII字符表

    第二部分是由 20H 到 7FH 共 96 个,这 95 个字符是用来表示阿拉伯数字、英文字母大小写和底线、括号等符号,都可以显示在屏幕上。 第三部分由 80H 到 0FFH 共 128 个字符,一般称为『扩充字符』,这 128 个扩充字符...

    ASCII码表完整版.doc

    示字符(英文大小写字符、阿拉伯数字和西文符号)。 基本的ASCII字符集,使用7位(bits)表示一个字符,共128字符。ASCII的扩展字符集使用8位(bits) 表示一个字符,共256字符,方便支持欧洲常用字符。

    128个完整的ASCII码

    32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。 ASCII码是计算机存储和传输文本数据的基础,...

    常用字符与ASCII代码对照表

    ASCII简表,ASCII(American Standard Code for ...32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。 65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。

    1602的16进制ASCII码

    这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能...

    ASCII码表完整版

    SCII 码使用指定的7 位或8 位二进制数组合来表示...32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。 65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。

    C51单片机驱动1602LED例程

    1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的...

    51单片机对LCD液晶显示器的控制

    1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号等,直接向其写入ASCII码即可显示相应字符。1602共16个 管脚,管脚功能如下:...

    asp 开发各种小功能

    模仿google搜索下拉框、Sql Server 常用函数、t-sql基本语法、阿拉伯数字转英文字母、强大的表单+验证、日历的自动选择、循环显示新闻、在一张图片上做热区

Global site tag (gtag.js) - Google Analytics