create function decodehundred(@hundredstring varchar(300) )returns varchar(1000)asbegindeclare @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) <= 3beginif len(@hundredstring) = 1beginset @tmp = cast(@hundredstring as int)if @tmp <> 0set @decodehundred = rtrim(substring(@strno1 ,(@tmp - 1) * 10 + 1,10)) endif len(@hundredstring) = 2beginset @tmp = cast(@hundredstring as int)if @tmp <> 0if @tmp < 20if @tmp < 10set @decodehundred = 'Zero '+rtrim(substring(@strno1 ,(@tmp - 1) * 10 + 1,10))elseset @decodehundred = rtrim(substring(@strno1 ,(@tmp - 1) * 10 + 1,10))elseif cast(right(@hundredstring, 1) as int ) = 0set @decodehundred = rtrim(substring(@strtens1 ,(@tmp/10 - 1) * 10 + 1,10))elseset @decodehundred = rtrim(substring(@strtens1 ,(@tmp/10 - 1) * 10 + 1,10)) + '-' + rtrim(substring(@strno1 ,(cast(right(@hundredstring, 1) as int) -1) * 10 + 1,10)) endif len(@hundredstring) = 3beginif cast(left(@hundredstring, 1) as int) <> 0set @decodehundred = rtrim(substring(@strno1 ,(cast(left(@hundredstring, 1) as int)- 1) * 10 + 1,10)) + ' ' + @unit4 + ' ' + dbo.decodehundred(right(@hundredstring, 2))elseset @decodehundred = dbo.decodehundred(right(@hundredstring, 2))endendreturn @decodehundredendgocreate function f_numbertostring(@number as numeric(12,2))returns varchar(1000)asbegindeclare @str varchar(100), @beforepoint varchar(100), @afterpoint varchar(100), @tmpstr varchar(100),@numbertostring varchar(200)declare @point int,@nnumlen intdeclare @nbit integerdeclare @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) = 0beginset @beforepoint = @strset @afterpoint = ''endelsebeginbeginset @beforepoint = left(@str, charindex('.', @str) - 1)set @afterpoint = right(@str, len(@str) - charindex('.', @str))endif len(@beforepoint) > 12beginset @numbertostring = 'Too big.'return @numbertostringendset @str = ''while len(@beforepoint) > 0beginset @nnumlen = len(@beforepoint)if @nnumlen % 3 = 0beginset @curstring = left(@beforepoint, 3)set @beforepoint = right(@beforepoint, @nnumlen - 3)endelsebeginset @curstring = left(@beforepoint, (@nnumlen % 3))set @beforepoint = right(@beforepoint, @nnumlen - (@nnumlen % 3))endset @nbit = len(@beforepoint) / 3set @tmpstr = dbo.decodehundred(@curstring)if (@beforepoint = REPLICATE ('0',len(@beforepoint)) or @nbit = 0) and len(@curstring) = 3if cast(left(@curstring, 1) as int) <> 0 and cast(right(@curstring, 2) as int) <> 0set @tmpstr = left(@tmpstr,charindex('Hundred', @tmpstr) + len('Hundred')) + 'And ' + right(@tmpstr, len(@tmpstr) - (charindex('Hundred',@tmpstr ) + 7))elseif cast(left(@curstring, 1) as int) <> 0 and cast(right(@curstring, 2) as int) = 0set @tmpstr = 'And ' + @tmpstrif @nbit = 0set @str = ltrim(@str + ' ' + @tmpstr)elseset @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)) breakendset @beforepoint = replace( @str,'*',' ')if len(@afterpoint) > 0set @afterpoint = 'Point' + ' ' + dbo.decodehundred(@afterpoint) + ' '-- + @unit7elseset @afterpoint = 'Only'set @numbertostring = replace(@beforepoint,'Zero','') + ' ' + @afterpointendset @numbertostring = ltrim(rtrim(@numbertostring))if right(@numbertostring,5) = 'point'set @numbertostring = replace(@numbertostring,'point','')return @numbertostringendgoselect dbo.f_numbertostring(123.00)/*------------------------------------one hundred and twenty-three(所影响的行数为 1 行)*/drop function decodehundred,f_numbertostring
阿拉伯数字显示成英文
最新推荐文章于 2021-02-16 14:35:46 发布