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实现数字与汉字的转换源码
5*5点阵显示数字(0-9),大小写字母(a-z;A-Z),汉字(大于等于5画或者有撇有捺)及希腊字母(22个常用的阿尔法,贝塔等等),显示外加OLED液晶显示与电脑上位机串口显示,4*4矩阵键盘输入与电脑上位机输入双重控制...
java生成1000张图片,分别在每张图片上写阿拉伯数字1~1000。个人在测试网页显示图片的顺序需要用到带序号的图片,于是自己写了一个方法用java生成了1000张图片分别对应1000个阿拉伯数字
1602是一款最常用也是最便宜的...1602可以显示内部常用字符(包括阿拉伯数字,英文字母大小写,常用符号和日文假名等),也可以显示自定义字符(单或多个字符组成的简单汉字,符号,图案等,最多可以产生8个自定义字符)。
pb数据窗口自动折行函数(打印时对编号、款号等英文数字没有空格时效果好,源码).zip
单片机实训,本文通过设计一个液晶显示电路,可可显示英文、阿拉伯数字及其他图形等来练习使用LCD。
点阵 LED 显示器是把一些 LED 组合在同一个...通常,若要显示阿拉伯数字、英文字母、特殊符号等,则可 采用 5×7 的点阵即可够用,若要显示中文字,则需要 4 片 8×8 的点阵组成 16×16 的点阵显示器才能显示一个中文字
本文设计一个16*64点阵模块控制器,根据标准的08控制接口要求,可以驱动市面上常见的16扫单色显示屏,显示汉字、英文、阿拉伯数字及其他信息等。整个系统提供很宽的外部扩展,包括时钟、温湿度、亮度等常规点阵控制...
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的...
第二部分 由20H到7FH,共96个,这95个字符是用来表示阿拉伯数字、英文字母大小写和底线、括号等符号,都可以显示在屏幕上。 第三部分 由80H到0FFH,共128个字符,一般称为『扩充字符』,这 128 个扩充字符是由 IBM ...
第二部分是由 20H 到 7FH 共 96 个,这 95 个字符是用来表示阿拉伯数字、英文字母大小写和底线、括号等符号,都可以显示在屏幕上。如下表: 第三部分由 80H 到 0FFH 共 128 个字符,一般称为『扩充字符』,这 128 个...
第二部分是由 20H 到 7FH 共 96 个,这 95 个字符是用来表示阿拉伯数字、英文字母大小写和底线、括号等符号,都可以显示在屏幕上。 第三部分由 80H 到 0FFH 共 128 个字符,一般称为『扩充字符』,这 128 个扩充字符...
示字符(英文大小写字符、阿拉伯数字和西文符号)。 基本的ASCII字符集,使用7位(bits)表示一个字符,共128字符。ASCII的扩展字符集使用8位(bits) 表示一个字符,共256字符,方便支持欧洲常用字符。
32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。 ASCII码是计算机存储和传输文本数据的基础,...
ASCII简表,ASCII(American Standard Code for ...32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。 65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能...
SCII 码使用指定的7 位或8 位二进制数组合来表示...32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。 65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的...
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号等,直接向其写入ASCII码即可显示相应字符。1602共16个 管脚,管脚功能如下:...
模仿google搜索下拉框、Sql Server 常用函数、t-sql基本语法、阿拉伯数字转英文字母、强大的表单+验证、日历的自动选择、循环显示新闻、在一张图片上做热区