將小寫金額轉換為英文大寫的SQL函式

2021-04-17 03:25:35 字數 1780 閱讀 3431

createfunction[dbo].[f_num_eng](@numnumeric(15,2))

returnsvarchar(400)withencryption

asbegin

sqldeclare@iint,@hundredsint,@tenthint,@oneint

declare@thousandint,@millionint,@billionint

declare@numbersvarchar(400),@svarchar(15),@resultvarchar(400)

set@numbers='one      two      three    four     five     '

+'six      seven    eight    nine     ten      '

+'eleven   twelve   thirteen fourteen fifteen  '

+'sixteen  seventeeneighteen nineteen '

+'twenty   thirty   forty    fifty    '

+'sixty    seventy  eighty   ninety   '

set@s=right('000000000000000'+cast(@numasvarchar(15)),15)

set@billion=cast(substring(@s,1,3)asint)--將12位整數分成4段:十億、百萬、千、百十個

set@million=cast(substring(@s,4,3)asint)

set@thousand=cast(substring(@s,7,3)asint)

set@result=''

set@i=0

while@i<=3

begin

set@hundreds=cast(substring(@s,@i*3+1,1)asint)--百位0-9

set@tenth=cast(substring(@s,@i*3+2,1)asint)

set@one=(case@tenthwhen1then10else0end)+cast(substring(@s,@i*3+3,1)asint)--個位0-19

set@tenth=(casewhen@tenth<=1then0else@tenthend)--十位0、2-9

if(@i=1and@billion>0and(@million>0or@thousand>0or@hundreds>0))or

(@i=2and(@billion>0or@million>0)and(@thousand>0or@hundreds>0))or

(@i=3and(@billion>0or@million>0or@thousand>0)and(@hundreds>0))

set@result=@result+','--百位不是0則每段之間加連線符,

if(@i=3and(@billion>0or@million>0or@thousand>0)and(@hundreds=0and(@tenth>0or@one>0)))

set@result=@result+'and'--百位是0則加連線符and

if@hundreds>0

set@result=@result+rtrim(substring(@numbers,@hundreds*10-9,10))+'hundred'

if@tenth>=2and@tenth<=9

begin

if@hundreds>0

set@result=@result+'and'1

小寫金額轉換為大寫金額

我的乙個朋友寫的,金額轉成大寫 public static string convertmoney decimal dnum string str2 new string string strunit string.join str1 string struppernum string.join s...

小寫金額轉換為大寫金額

在很多地方都有用到將小寫金額轉換為大寫金額,就是將類似1234.56轉換為壹仟貳佰叄拾肆圓伍角陸分。到底要怎樣實現呢?其實只要仔細注意自己到底是怎麼讀的,細細揣摩一下。1 在千位 壹仟 2 在百位 貳佰.所以有兩個過程 1.講阿拉伯數字轉換為大寫數字。2.在各位後面加上諸如 萬 仟 佰 拾 圓 分 ...

PL SQL 將小寫的金額轉換為大寫

create or replace function smalltobig smallmoney in varchar2 return varchar2 is dotplace number 2 小數點位置 uppercase varchar2 60 大寫方式 rmb varchar2 3 rmb的...