首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

SSIS數值轉換為英文描述解决办法

2013-03-06 
SSIS數值轉換為英文描述在SSIS中如何使100轉為英文One Hundred?轉換SSIS[解决办法]除非自己手写匹配表。没

SSIS數值轉換為英文描述
在SSIS中如何使100轉為英文One Hundred?  轉換 SSIS
[解决办法]
除非自己手写匹配表。没有自带翻译哦。

[解决办法]
SSIS本身没有办法解决。
我是在数据库中自己手写匹配表,然后把SSIS页面的语言环境值以变量形式给入数据库,然后数据库返回string,在SSIS中显示。
[解决办法]
使用script 控件传入数字返回字符串。

将数字翻译成英文单词。

参考一下下面链接中的回复
http://www.club-oracle.com/forums/sql-to-convert-number-to-words-t657/

你可以把下面的VBS代码写成一个函数。



public   Function   NumToText(dblVal   As   Double, CurrencyCode As String)   As   String 
        Static   Ones(0   To   9)   As   String 
        Static   Teens(0   To   9)   As   String 
        Static   Tens(0   To   9)   As   String 
        Static   Thousands(0   To   4)   As   String 
        Static   bInit   As   Boolean 
        Dim   i   As   Integer,   bAllZeros   As   Boolean,   bShowThousands   As   Boolean
        Dim   strVal   As   String,   strBuff   As   String,   strTemp   As   String 
        Dim   nCol   As   Integer,   nChar   As   Integer 
        Dim CurrencyUnit As String, CurrencyCents As String
        'Only   handles   positive   values 
        if dblVal   <   0 then
exit function
        end if

        If   bInit   =   False   Then 
                'Initialize   array 
                bInit   =   True 
                Ones(0)   =   "zero " 
                Ones(1)   =   "one " 
                Ones(2)   =   "two " 
                Ones(3)   =   "three " 


                Ones(4)   =   "four " 
                Ones(5)   =   "five " 
                Ones(6)   =   "six " 
                Ones(7)   =   "seven " 
                Ones(8)   =   "eight " 
                Ones(9)   =   "nine " 
                Teens(0)   =   "ten " 
                Teens(1)   =   "eleven " 
                Teens(2)   =   "twelve " 
                Teens(3)   =   "thirteen " 
                Teens(4)   =   "fourteen " 
                Teens(5)   =   "fifteen " 
                Teens(6)   =   "sixteen " 
                Teens(7)   =   "seventeen " 
                Teens(8)   =   "eighteen " 
                Teens(9)   =   "nineteen " 
                Tens(0)   =   " " 
                Tens(1)   =   "ten " 
                Tens(2)   =   "twenty " 
                Tens(3)   =   "thirty " 
                Tens(4)   =   "forty " 
                Tens(5)   =   "fifty " 
                Tens(6)   =   "sixty " 
                Tens(7)   =   "seventy " 
                Tens(8)   =   "eighty " 


                Tens(9)   =   "ninety " 
                Thousands(0)   =   "" 
                Thousands(1)   =   "thousand "       'US   numbering 
                Thousands(2)   =   "million" 
                Thousands(3)   =   "billion" 
                Thousands(4)   =   "trillion" 
        End   If 
        'Trap   errors 
        On   Error   GoTo   NumToTextError 
        'Get   fractional   part 
        Select Case CurrencyCode
case "MNT"
       CurrencyUnit="tugrug"
CurrencyCents="mungu"
case "USD"
CurrencyUnit="dollars"
CurrencyCents="cents"
case "AUD"
CurrencyUnit="dollars"
CurrencyCents="cents"
case "EUR"
CurrencyUnit="euros"
CurrencyCents="cents"
end select

        If   dblVal   -   Int(dblVal)   >   0   Then 
              strBuff   =   Cstr(CurrencyUnit) & " and "   &  lcase(trim(replace(NumToText(Int(Format((dblVal   -   Int(dblVal))   *   100,   "00")),""),"only","")))   & " "& Cstr(CurrencyCents)  & " only" 
        Else 
              strBuff   =   Cstr(CurrencyUnit) & " only " 
        End   If

        ' strBuff   =   "and   "   &   Format((dblVal   -   Int(dblVal))   *   100,   "00 ")   &   "/100 " 
        'Convert   rest   to   string   and   process   each   digit 
        strVal   =   CStr(Int(dblVal)) 
        'Non-zero   digit   not   yet   encountered 
        bAllZeros   =   True 
        'Iterate   through   string 


        For   i   =   Len(strVal)   To   1   Step   -1 
                'Get   value   of   this   digit 
                nChar   =   Val(Mid$(strVal,   i,   1)) 
                'Get   column   position 
                nCol   =   (Len(strVal)   -   i)   +   1 
                'Action   depends   on   1 's,   10 's   or   100 's   column 
                Select   Case   (nCol   Mod   3) 
                        Case   1     '1 's   position 
                                bShowThousands   =   True 
                                If   i   =   1   Then 
                                        'First   digit   in   number   (last   in   loop) 
                                        strTemp   =   Ones(nChar)             ' &   " " 
                                ElseIf   Mid$(strVal,   i   -   1,   1)   =   "1"   Then 
                                        'This   digit   is   part   of   "teen "   number 
                                        strTemp   =   Teens(nChar)          '&   " " 


                                        i   =   i   -   1       'Skip   tens   position 
                                ElseIf   nChar   >   0   Then 
                                        'Any   non-zero   digit 
                                        strTemp   =   Ones(nChar)             ' &   " " 
                                Else 
                                        'This   digit   is   zero.   If   digit   in   tens   and   hundreds   column 
                                        'are   also   zero,   don 't   show   "thousands " 
                                        bShowThousands   =   False 
                                        'Test   for   non-zero   digit   in   this   grouping 
                                        If   Mid$(strVal,   i   -   1,   1)   <>   "0"   Then 
                                                bShowThousands   =   True 
                                        ElseIf   i   >   2   Then 


                                                If   Mid$(strVal,   i   -   2,   1)   <>   "0"   Then 
                                                        bShowThousands   =   True 
                                                End   If 
                                        End   If 
                                        strTemp   =   "" 
                                End   If 
                                'Show   "thousands "   if   non-zero   in   grouping 
                                If   bShowThousands   Then 
                                        If   nCol   >   1   Then 
                                                strTemp   =   strTemp   &   Thousands(nCol   \   3) 
                                                If   bAllZeros   Then 
                                                        strTemp   =   strTemp        ' &   " " 


                                                Else 
                                                        strTemp   =   strTemp   &   ", " 
                                                End   If 
                                        End   If 
                                        'Indicate   non-zero   digit   encountered 
                                        bAllZeros   =   False 
                                End   If 
                                strBuff   =   strTemp   &   strBuff 
                        Case   2     '10 's   position 
                                If   nChar   >   0   Then 
                                        If   Mid$(strVal,   i   +   1,   1)   <>   "0 "   Then 
                                                strBuff   =   Tens(nChar)   &   ""   &   strBuff 
                                        Else 


                                                strBuff   =   Tens(nChar)   &   ""   &   strBuff 
                                        End   If 
                                End   If 
                        Case   0     '100 's   position 
                                If   nChar   >   0   Then 
                                        If Val(Mid$(strVal,   i+1,   1))="0" and Val(Mid$(strVal,   i+2,   1))="0"  Then
                                               strBuff   =   Ones(nChar)   &   "hundred "   &   strBuff 
                                        Else
                                               strBuff   =   Ones(nChar)   &   "hundred and "   &   strBuff
                                        End if
                                End   If 
                End   Select 
        Next   i 
        'Convert   first   letter   to   upper   case 
        strBuff   =   UCase$(Left$(strBuff,   1))   &   Mid$(strBuff,   2) 


EndNumToText: 
        'Return   result 
        NumToText   =   strBuff 
        Exit   Function 
NumToTextError: 
        strBuff   =   "#Error# " 
        Resume   EndNumToText 
End   Function


热点排行
Bad Request.