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的...