Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql dbo.fnigertowords(@Number%100000000) ELSE“无效输入”结束 ) 选择@English=RTRIM(@English) 选择@English=RTRIM(左(@English,len(@English)-1)) 其中右(@English,1)='-' 返回(@English) 结束_Sql_Sql Server_String_Numbers - Fatal编程技术网

Sql dbo.fnigertowords(@Number%100000000) ELSE“无效输入”结束 ) 选择@English=RTRIM(@English) 选择@English=RTRIM(左(@English,len(@English)-1)) 其中右(@English,1)='-' 返回(@English) 结束

Sql dbo.fnigertowords(@Number%100000000) ELSE“无效输入”结束 ) 选择@English=RTRIM(@English) 选择@English=RTRIM(左(@English,len(@English)-1)) 其中右(@English,1)='-' 返回(@English) 结束,sql,sql-server,string,numbers,Sql,Sql Server,String,Numbers,我刚刚将MySql中的一个函数从999更新为999999999 这是指向原始链接的链接: 更新后的版本如下: 如果dig9>0,则 case when dig9=1 then set ans=concat(ans, 'One Hundred'); when dig9=2 then set ans=concat(ans, 'Two Hundred'); when dig9=3 then set ans=con

我刚刚将MySql中的一个函数从999更新为999999999

这是指向原始链接的链接:

更新后的版本如下:


如果dig9>0,则

        case
            when dig9=1 then set ans=concat(ans, 'One Hundred');
            when dig9=2 then set ans=concat(ans, 'Two Hundred');
            when dig9=3 then set ans=concat(ans, 'Three Hundred');
            when dig9=4 then set ans=concat(ans, 'Four Hundred');
            when dig9=5 then set ans=concat(ans, 'Five Hundred');
            when dig9=6 then set ans=concat(ans, 'Six Hundred');
            when dig9=7 then set ans=concat(ans, 'Seven Hundred');
            when dig9=8 then set ans=concat(ans, 'Eight Hundred');
            when dig9=9 then set ans=concat(ans, 'Nine Hundred');
            else set ans = ans;
        end case;
         if ans <> '' and dig8 =0 and dig7 = 0 then
            set ans=concat(ans, ' Million');
        end if;
    end if;
    if ans <> '' and dig8 > 0 then
        set ans=concat(ans, ' And ');
    end if;
    if dig8 = 1 then
        case
            when (dig8*10 + dig7) = 10 then set ans=concat(ans,'Ten Million');
            when (dig8*10 + dig7) = 11 then set ans=concat(ans,'Eleven Million');
            when (dig8*10 + dig7) = 12 then set ans=concat(ans,'Twelve Million');
            when (dig8*10 + dig7) = 13 then set ans=concat(ans,'Thirteen Million');
            when (dig8*10 + dig7) = 14 then set ans=concat(ans,'Fourteen Million');
            when (dig8*10 + dig7) = 15 then set ans=concat(ans,'Fifteen Million');
            when (dig8*10 + dig7) = 16 then set ans=concat(ans,'Sixteen Million');
            when (dig8*10 + dig7) = 17 then set ans=concat(ans,'Seventeen Million');
            when (dig8*10 + dig7) = 18 then set ans=concat(ans,'Eighteen Million');
            when (dig8*10 + dig7) = 19 then set ans=concat(ans,'Nineteen Million');
            else set ans=ans;
        end case;
    else
        if dig8 > 0 then
            case
                when dig8=2 then set ans=concat(ans, ' Twenty');
                when dig8=3 then set ans=concat(ans, ' Thirty');
                when dig8=4 then set ans=concat(ans, ' Fourty');
                when dig8=5 then set ans=concat(ans, ' Fifty');
                when dig8=6 then set ans=concat(ans, ' Sixty');
                when dig8=7 then set ans=concat(ans, ' Seventy');
                when dig8=8 then set ans=concat(ans, ' Eighty');
                when dig8=9 then set ans=concat(ans, ' Ninety');
                else set ans=ans;
            end case;
            if ans <> '' and dig7 =0 then
            set ans=concat(ans, ' Million');
            end if;
        end if;
        if ans <> '' and dig7 > 0 and dig8 =0 then
        set ans=concat(ans, ' And ');
        end if;
        if dig7 > 0 then
        case
            when dig7=1 then set ans=concat(ans, ' One Million');
            when dig7=2 then set ans=concat(ans, ' Two Million');
            when dig7=3 then set ans=concat(ans, ' Three Million');
            when dig7=4 then set ans=concat(ans, ' Four Million');
            when dig7=5 then set ans=concat(ans, ' Five Million');
            when dig7=6 then set ans=concat(ans, ' Six Million');
            when dig7=7 then set ans=concat(ans, ' Seven Million');
            when dig7=8 then set ans=concat(ans, ' Eight Million');
            when dig7=9 then set ans=concat(ans, ' Nine Million');
            else set ans = ans;
        end case;
    end if;
end if;
    if ans <> '' and dig6 > 0 then
        set ans=concat(ans, ' And ');
    end if;

    if dig6 > 0 then
        case
            when dig6=1 then set ans=concat(ans, 'One Hundred');
            when dig6=2 then set ans=concat(ans, 'Two Hundred');
            when dig6=3 then set ans=concat(ans, 'Three Hundred');
            when dig6=4 then set ans=concat(ans, 'Four Hundred');
            when dig6=5 then set ans=concat(ans, 'Five Hundred');
            when dig6=6 then set ans=concat(ans, 'Six Hundred');
            when dig6=7 then set ans=concat(ans, 'Seven Hundred');
            when dig6=8 then set ans=concat(ans, 'Eight Hundred');
            when dig6=9 then set ans=concat(ans, 'Nine Hundred');
            else set ans = ans;
        end case;
         if ans <> '' and dig4 =0 and dig5 = 0 then
            set ans=concat(ans, ' Thousand');
        end if;
    end if;
    if ans <> '' and dig5 > 0 then
        set ans=concat(ans, ' And ');
    end if;
    if dig5 = 1 then
        case
            when (dig5*10 + dig4) = 10 then set ans=concat(ans,'Ten Thousand');
            when (dig5*10 + dig4) = 11 then set ans=concat(ans,'Eleven Thousand');
            when (dig5*10 + dig4) = 12 then set ans=concat(ans,'Twelve Thousand');
            when (dig5*10 + dig4) = 13 then set ans=concat(ans,'Thirteen Thousand');
            when (dig5*10 + dig4) = 14 then set ans=concat(ans,'Fourteen Thousand');
            when (dig5*10 + dig4) = 15 then set ans=concat(ans,'Fifteen Thousand');
            when (dig5*10 + dig4) = 16 then set ans=concat(ans,'Sixteen Thousand');
            when (dig5*10 + dig4) = 17 then set ans=concat(ans,'Seventeen Thousand');
            when (dig5*10 + dig4) = 18 then set ans=concat(ans,'Eighteen Thousand');
            when (dig5*10 + dig4) = 19 then set ans=concat(ans,'Nineteen Thousand');
            else set ans=ans;
        end case;
    else
        if dig5 > 0 then
            case
                when dig5=2 then set ans=concat(ans, ' Twenty');
                when dig5=3 then set ans=concat(ans, ' Thirty');
                when dig5=4 then set ans=concat(ans, ' Fourty');
                when dig5=5 then set ans=concat(ans, ' Fifty');
                when dig5=6 then set ans=concat(ans, ' Sixty');
                when dig5=7 then set ans=concat(ans, ' Seventy');
                when dig5=8 then set ans=concat(ans, ' Eighty');
                when dig5=9 then set ans=concat(ans, ' Ninety');
                else set ans=ans;
            end case;
            if ans <> '' and dig4 =0 then
            set ans=concat(ans, ' Thousand');
            end if;
        end if;
        if ans <> '' and dig4 > 0 and dig5 =0 then
        set ans=concat(ans, ' And ');
        end if;
        if dig4 > 0 then
        case
            when dig4=1 then set ans=concat(ans, ' One Thousand');
            when dig4=2 then set ans=concat(ans, ' Two Thousand');
            when dig4=3 then set ans=concat(ans, ' Three Thousand');
            when dig4=4 then set ans=concat(ans, ' Four Thousand');
            when dig4=5 then set ans=concat(ans, ' Five Thousand');
            when dig4=6 then set ans=concat(ans, ' Six Thousand');
            when dig4=7 then set ans=concat(ans, ' Seven Thousand');
            when dig4=8 then set ans=concat(ans, ' Eight Thousand');
            when dig4=9 then set ans=concat(ans, ' Nine Thousand');
            else set ans = ans;
        end case;
    end if;
end if;
    if ans <> '' and dig3 > 0 then
        set ans=concat(ans, ' And ');
    end if;
    if dig3 > 0 then
        case
            when dig3=1 then set ans=concat(ans, 'One Hundred');
            when dig3=2 then set ans=concat(ans, 'Two Hundred');
            when dig3=3 then set ans=concat(ans, 'Three Hundred');
            when dig3=4 then set ans=concat(ans, 'Four Hundred');
            when dig3=5 then set ans=concat(ans, 'Five Hundred');
            when dig3=6 then set ans=concat(ans, 'Six Hundred');
            when dig3=7 then set ans=concat(ans, 'Seven Hundred');
            when dig3=8 then set ans=concat(ans, 'Eight Hundred');
            when dig3=9 then set ans=concat(ans, 'Nine Hundred');
            else set ans = ans;
        end case;
    end if;
    if ans <> '' and dig2 > 0 then
        set ans=concat(ans, ' And ');
    end if;
    if dig2 = 1 then
        case
            when (dig2*10 + dig1) = 10 then set ans=concat(ans,'Ten');
            when (dig2*10 + dig1) = 11 then set ans=concat(ans,'Eleven');
            when (dig2*10 + dig1) = 12 then set ans=concat(ans,'Twelve');
            when (dig2*10 + dig1) = 13 then set ans=concat(ans,'Thirteen');
            when (dig2*10 + dig1) = 14 then set ans=concat(ans,'Fourteen');
            when (dig2*10 + dig1) = 15 then set ans=concat(ans,'Fifteen');
            when (dig2*10 + dig1) = 16 then set ans=concat(ans,'Sixteen');
            when (dig2*10 + dig1) = 17 then set ans=concat(ans,'Seventeen');
            when (dig2*10 + dig1) = 18 then set ans=concat(ans,'Eighteen');
            when (dig2*10 + dig1) = 19 then set ans=concat(ans,'Nineteen');
            else set ans=ans;
        end case;
    else
        if dig2 > 0 then
            case
                when dig2=2 then set ans=concat(ans, ' Twenty');
                when dig2=3 then set ans=concat(ans, ' Thirty');
                when dig2=4 then set ans=concat(ans, ' Fourty');
                when dig2=5 then set ans=concat(ans, ' Fifty');
                when dig2=6 then set ans=concat(ans, ' Sixty');
                when dig2=7 then set ans=concat(ans, ' Seventy');
                when dig2=8 then set ans=concat(ans, ' Eighty');
                when dig2=9 then set ans=concat(ans, ' Ninety');
                else set ans=ans;
            end case;
        end if;
        if ans <> '' and dig1 > 0 and dig2 =0 then
        set ans=concat(ans, ' And ');
        end if;
        if dig1 > 0 then
            case
                when dig1=1 then set ans=concat(ans, ' One');
                when dig1=2 then set ans=concat(ans, ' Two');
                when dig1=3 then set ans=concat(ans, ' Three');
                when dig1=4 then set ans=concat(ans, ' Four');
                when dig1=5 then set ans=concat(ans, ' Five');
                when dig1=6 then set ans=concat(ans, ' Six');
                when dig1=7 then set ans=concat(ans, ' Seven');
                when dig1=8 then set ans=concat(ans, ' Eight');
                when dig1=9 then set ans=concat(ans, ' Nine');
                else set ans=ans;
            end case;
        end if;
    end if;

    return trim(ans);
    END
案例
当dig9=1时,则设置ans=concat(ans,“一百”);
当dig9=2时,则设置ans=concat(ans,‘两百’);
当dig9=3时,则设置ans=concat(ans,“三百”);
当dig9=4时,则设置ans=concat(ans,‘四百’);
当dig9=5时,则设置ans=concat(ans,‘五百’);
当dig9=6时,则设置ans=concat(ans,“六百”);
当dig9=7时,则设置ans=concat(ans,“七百”);
当dig9=8时,则设置ans=concat(ans,“八百”);
当dig9=9时,则设置ans=concat(ans,“九百”);
否则设置ans=ans;
终例;
如果ans“”和dig8=0和dig7=0,则
设置ans=concat(ans,'百万');
如果结束;
如果结束;
如果ans“”和dig8>0,则
设置ans=concat(ans,'和');
如果结束;
如果dig8=1,则
案例
当(dig8*10+dig7)=10时,则设置ans=concat(ans,'1000万');
当(dig8*10+dig7)=11时,则设置ans=concat(ans,'1100万');
当(dig8*10+dig7)=12时,则设置ans=concat(ans,'1200万');
当(dig8*10+dig7)=13时,则设置ans=concat(ans,'1300万');
当(dig8*10+dig7)=14时,则设置ans=concat(ans,'1400万');
当(dig8*10+dig7)=15时,则设置ans=concat(ans,'1500万');
当(dig8*10+dig7)=16时,则设置ans=concat(ans,'1600万');
当(dig8*10+dig7)=17时,则设置ans=concat(ans,'17000000');
当(dig8*10+dig7)=18时,则设置ans=concat(ans,'1800万');
当(dig8*10+dig7)=19时,则设置ans=concat(ans,'1900万');
否则设置ans=ans;
终例;
其他的
如果dig8>0,则
案例
当dig8=2时,则设置ans=concat(ans,‘二十’);
当dig8=3时,则设置ans=concat(ans,‘三十’);
当dig8=4时,设置ans=concat(ans,'Fourty');
当dig8=5时,则设置ans=concat(ans,‘五十’);
当dig8=6时,则设置ans=concat(ans,‘六十’);
当dig8=7时,则设置ans=concat(ans,‘七十’);
当dig8=8时,则设置ans=concat(ans,'80');
当dig8=9时,则设置ans=concat(ans,'90');
否则设置ans=ans;
终例;
如果ans“”和dig7=0,则
设置ans=concat(ans,'百万');
如果结束;
如果结束;
如果ans“”和dig7>0且dig8=0,则
设置ans=concat(ans,'和');
如果结束;
如果dig7>0,则
案例
当dig7=1时,则设置ans=concat(ans,“一百万”);
当dig7=2时,则设置ans=concat(ans,‘两百万’);
当dig7=3时,则设置ans=concat(ans,“三百万”);
当dig7=4时,则设置ans=concat(ans,“400万”);
当dig7=5时,则设置ans=concat(ans,“500万”);
当dig7=6时,则设置ans=concat(ans,“600万”);
当dig7=7时,则设置ans=concat(ans,“700万”);
当dig7=8时,则设置ans=concat(ans,“800万”);
当dig7=9时,则设置ans=concat(ans,“九百万”);
否则设置ans=ans;
终例;
如果结束;
如果结束;
如果ans“”和dig6>0,则
设置ans=concat(ans,'和');
如果结束;
如果dig6>0,则
案例
当dig6=1时,则设置ans=concat(ans,“一百”);
当dig6=2时,则设置ans=concat(ans,‘两百’);
当dig6=3时,则设置ans=concat(ans,“三百”);
当dig6=4时,则设置ans=concat(ans,‘四百’);
当dig6=5时,则设置ans=concat(ans,‘五百’);
当dig6=6时,则设置ans=concat(ans,“六百”);
当dig6=7时,则设置ans=concat(ans,“七百”);
当dig6=8时,则设置ans=concat(ans,“八百”);
当dig6=9时,则设置ans=concat(ans,“九百”);
否则设置ans=ans;
终例;
如果ans“”和dig4=0和dig5=0,则
设置ans=concat(ans,'千');
如果结束;
如果结束;
如果ans“”和dig5>0,则
设置ans=concat(ans,'和');
如果结束;
如果dig5=1,则
案例
当(dig5*10+dig4)=10时,则设置ans=concat(ans,'10000');
当(dig5*10+dig4)=11时,则设置ans=concat(ans,'11000');
当(dig5*10+dig4)=12时,则设置ans=concat(ans,'12000');
当(dig5*10+dig4)=13时,则设置ans=concat(ans,'13000');
当(dig5*10+dig4)=14时,则设置ans=concat(ans,'14000');
当(dig5*10+dig4)=15时,则设置ans=concat(ans,'15000');
当(dig5*10+dig4)=16时,则设置ans=concat(ans,'16000');
当(dig5*10+dig4)=17时,则设置ans=concat(ans,'17000');
当(dig5*10+dig4)=18时,则设置ans=concat(ans,'18000');
当(dig5*10+dig4)=19时,则设置ans=concat(ans,'19000');
否则设置ans=ans;
终例;
其他的
如果dig5>0,则
案例
当dig5=2时,则设置ans=concat(ans,‘二十’);
当dig5=3时,则设置ans=concat(ans,‘三十’);
当dig5=4时,则设置ans=concat(ans,'Fourty');
当dig5=5时,则设置ans=concat(ans,‘五十’);
DECLARE @n int = 515

DECLARE @v varchar(100) = CAST(@N as varchar)

SELECT CASE WHEN LEN(@v) = 3 THEN 
    (CASE   WHEN LEFT(@v, 1) = 1 THEN 'One Hundred'
            WHEN LEFT(@v, 1) = 2 THEN 'Two Hundred'
            WHEN LEFT(@v, 1) = 3 THEN 'Three Hundred'
            WHEN LEFT(@v, 1) = 4 THEN 'Four Hundred'
            WHEN LEFT(@v, 1) = 5 THEN 'Five Hundred'
            WHEN LEFT(@v, 1) = 6 THEN 'Six Hundred'
            WHEN LEFT(@v, 1) = 7 THEN 'Seven Hundred'
            WHEN LEFT(@v, 1) = 8 THEN 'Eight Hundred'
            WHEN LEFT(@v, 1) = 9 THEN 'Nine Hundred'
            ELSE '' END)
    + ' ' +
    (CASE   WHEN SUBSTRING(@v, 2, 1) = 2 THEN 'Twenty'
            WHEN SUBSTRING(@v, 2, 1) = 3 THEN 'Thirty'
            WHEN SUBSTRING(@v, 2, 1) = 4 THEN 'Forty'
            WHEN SUBSTRING(@v, 2, 1) = 5 THEN 'Fifty'
            WHEN SUBSTRING(@v, 2, 1) = 6 THEN 'Sixty'
            WHEN SUBSTRING(@v, 2, 1) = 7 THEN 'Seventy'
            WHEN SUBSTRING(@v, 2, 1) = 8 THEN 'Eighty'
            WHEN SUBSTRING(@v, 2, 1) = 9 THEN 'Ninety'
            WHEN SUBSTRING(@v, 2, 1) = 1 THEN 
                CASE    WHEN SUBSTRING(@v, 2, 2) = 10 THEN 'Ten'
                        WHEN SUBSTRING(@v, 2, 2) = 11 THEN 'Eleven'
                        WHEN SUBSTRING(@v, 2, 2) = 12 THEN 'Twelve'
                        WHEN SUBSTRING(@v, 2, 2) = 13 THEN 'Thirteen'
                        WHEN SUBSTRING(@v, 2, 2) = 14 THEN 'Fourteen'
                        WHEN SUBSTRING(@v, 2, 2) = 15 THEN 'Fifteen'
                        WHEN SUBSTRING(@v, 2, 2) = 16 THEN 'Sixteen'
                        WHEN SUBSTRING(@v, 2, 2) = 17 THEN 'Seventeen'
                        WHEN SUBSTRING(@v, 2, 2) = 18 THEN 'Eighteen'
                        WHEN SUBSTRING(@v, 2, 2) = 19 THEN 'Nineteen'
                        ELSE '' END




            ELSE '' END)
    + ' ' +
    (CASE   WHEN SUBSTRING(@v, 2, 1) = 1 THEN ''
            WHEN SUBSTRING(@v, 3, 1) = 2 THEN 'Two'
            WHEN SUBSTRING(@v, 3, 1) = 3 THEN 'Three'
            WHEN SUBSTRING(@v, 3, 1) = 4 THEN 'Four'
            WHEN SUBSTRING(@v, 3, 1) = 5 THEN 'Five'
            WHEN SUBSTRING(@v, 3, 1) = 6 THEN 'Six'
            WHEN SUBSTRING(@v, 3, 1) = 7 THEN 'Seven'
            WHEN SUBSTRING(@v, 3, 1) = 8 THEN 'Eight'
            WHEN SUBSTRING(@v, 3, 1) = 9 THEN 'Nine'
            WHEN SUBSTRING(@v, 3, 1) = 1 THEN 'One'
            ELSE '' END)
    END
CREATE TABLE tblNumbers (Nmb int, NmbWord varchar(100))
INSERT INTO tblNumbers 
VALUES (1,'first'), (2,'second'),(3,'third'), (4,'forth')

CREATE TABLE SomeTable (nmb int)

INSERT INTO SomeTable 
VALUES (1), (1),(2),(3)

SELECT  N.*
FROM tblNumbers N
     JOIN SomeTable ST ON ST.nmb=N.Nmb

DROP TABLE tblNumbers
DROP TABLE SomeTable
IF OBJECT_ID('tempdb..#numbers_list') IS NOT NULL DROP TABLE #numbers_list
CREATE TABLE #numbers_list (int_value INT, text_value VARCHAR(100))
INSERT INTO #numbers_list
SELECT 1 as int_value, 'One' as text_value UNION ALL
SELECT 2 as int_value, 'Two' as text_value UNION ALL
SELECT 3 as int_value, 'Three' as text_value UNION ALL
SELECT 4 as int_value, 'Four' as text_value UNION ALL
SELECT 5 as int_value, 'Five' as text_value UNION ALL
SELECT 6 as int_value, 'Six' as text_value UNION ALL
SELECT 7 as int_value, 'Seven' as text_value UNION ALL
SELECT 8 as int_value, 'Eight' as text_value UNION ALL
SELECT 9 as int_value, 'Nine' as text_value UNION ALL
SELECT 10 as int_value, 'Ten' as text_value UNION ALL
SELECT 11 as int_value, 'Eleven' as text_value UNION ALL
SELECT 12 as int_value, 'Twelve' as text_value UNION ALL
SELECT 13 as int_value, 'Thirteen' as text_value UNION ALL
SELECT 14 as int_value, 'Fourteen' as text_value UNION ALL
SELECT 15 as int_value, 'Fifteen' as text_value UNION ALL
SELECT 16 as int_value, 'Sixteen' as text_value UNION ALL
SELECT 17 as int_value, 'Seventeen' as text_value UNION ALL
SELECT 18 as int_value, 'Eighteen' as text_value UNION ALL
SELECT 19 as int_value, 'Nineteen' as text_value UNION ALL
SELECT 20 as int_value, 'Twenty' as text_value UNION ALL
SELECT 30 as int_value, 'Thirty' as text_value UNION ALL
SELECT 40 as int_value, 'Fourty' as text_value UNION ALL
SELECT 50 as int_value, 'Fifty' as text_value UNION ALL
SELECT 60 as int_value, 'Sixty' as text_value UNION ALL
SELECT 70 as int_value, 'Seventy' as text_value UNION ALL
SELECT 80 as int_value, 'Eighty' as text_value UNION ALL
SELECT 90 as int_value, 'Ninety' as text_value UNION ALL
SELECT 100 AS int_value, 'One Hundred' AS text_value

SELECT 
tst2.number
,CASE WHEN exact.text_value IS NOT NULL THEN exact.text_value 
        WHEN tst2.number > 100 AND COALESCE(tens.text_value,ones.text_value) IS NULL THEN hunds.text_value + ' Hundred'
        WHEN tst2.number > 100 AND tst2.number_of_ones = 0 THEN hunds.text_value + ' Hundred And ' + tens.text_value
        WHEN tst2.number > 100 AND tst2.number_of_tens = 0 THEN hunds.text_value + ' Hundred And ' + ones.text_value
        WHEN tst2.number > 100 THEN hunds.text_value + ' Hundred And ' + tens.text_value + ' ' + ones.text_value
        WHEN tst2.number > 10 THEN tens.text_value + ' ' + ones.text_value
END AS string
FROM
(
SELECT tst.number
,tst.number % 10 as number_of_ones
,CASE WHEN tst.number < 101 THEN tst.number - (tst.number % 10) 
    WHEN tst.number > 100 THEN tst.number - 100 * (FLOOR(tst.number / 100)) - (tst.number % 10)
END as number_of_tens
,tst.number / 100 as number_of_hundreds
FROM 
(
SELECT 22 as number UNION ALL
SELECT 27 UNION ALL
SELECT 10 UNION ALL
SELECT 101 UNION ALL
SELECT 200 UNION ALL
SELECT 227
) tst
) tst2
LEFT OUTER JOIN #numbers_list exact on exact.int_value = tst2.number --if an exact match
LEFT OUTER JOIN #numbers_list ones on ones.int_value = tst2.number_of_ones 
LEFT OUTER JOIN #numbers_list tens on tens.int_value = tst2.number_of_tens
LEFT OUTER JOIN #numbers_list hunds on hunds.int_value = tst2.number_of_hundreds
CREATE FUNCTION fnIntegerToWords(@Number as BIGINT) 
    RETURNS VARCHAR(1024)
AS

BEGIN
      DECLARE @Below20 TABLE (ID int identity(0,1), Word varchar(32))
      DECLARE @Below100 TABLE (ID int identity(2,1), Word varchar(32))
      INSERT @Below20 (Word) VALUES 
                        ( 'Zero'), ('One'),( 'Two' ), ( 'Three'),
                        ( 'Four' ), ( 'Five' ), ( 'Six' ), ( 'Seven' ),
                        ( 'Eight'), ( 'Nine'), ( 'Ten'), ( 'Eleven' ),
                        ( 'Twelve' ), ( 'Thirteen' ), ( 'Fourteen'),
                        ( 'Fifteen' ), ('Sixteen' ), ( 'Seventeen'),
                        ('Eighteen' ), ( 'Nineteen' ) 

       INSERT @Below100 VALUES ('Twenty'), ('Thirty'),('Forty'), ('Fifty'),
                               ('Sixty'), ('Seventy'), ('Eighty'), ('Ninety')

    declare @belowHundred as varchar(126) 

    if @Number > 99 begin
        select @belowHundred = dbo.fnIntegerToWords( @Number % 100)
    end

    DECLARE @English varchar(1024) = 

    (

      SELECT Case 
        WHEN @Number = 0 THEN  ''

        WHEN @Number BETWEEN 1 AND 19 
          THEN (SELECT Word FROM @Below20 WHERE ID=@Number)

       WHEN @Number BETWEEN 20 AND 99   
         THEN  (SELECT Word FROM @Below100 WHERE ID=@Number/10)+ '-' +
               dbo.fnIntegerToWords( @Number % 10) 

       WHEN @Number BETWEEN 100 AND 999   
         THEN  (dbo.fnIntegerToWords( @Number / 100)) +' Hundred '+
             Case WHEN @belowHundred <> '' THEN 'and ' + @belowHundred else @belowHundred end 

       WHEN @Number BETWEEN 1000 AND 999999   
         THEN  (dbo.fnIntegerToWords( @Number / 1000))+' Thousand '+
             dbo.fnIntegerToWords( @Number % 1000)  

       WHEN @Number BETWEEN 1000000 AND 999999999   
         THEN  (dbo.fnIntegerToWords( @Number / 1000000))+' Million '+
             dbo.fnIntegerToWords( @Number % 1000000) 

       WHEN @Number BETWEEN 1000000000 AND 999999999999   
         THEN  (dbo.fnIntegerToWords( @Number / 1000000000))+' Billion '+
             dbo.fnIntegerToWords( @Number % 1000000000) 

            ELSE ' INVALID INPUT' END
    )

    SELECT @English = RTRIM(@English)

    SELECT @English = RTRIM(LEFT(@English,len(@English)-1))
        WHERE RIGHT(@English,1)='-'

    RETURN (@English)

END 
CREATE FUNCTION `number_to_string`(n INT) RETURNS varchar(1000) CHARSET latin1 BEGIN
    declare ans varchar(1000);
    declare dig1, dig2, dig3,dig4,dig5,dig6,dig7,dig8,dig9 int;

    set ans = '';
    set dig9 = floor(n/100000000);
    set dig8 = floor(n/10000000) - dig9*10;
    set dig7 = floor(n/1000000) -(floor(n/10000000)*10);
    set dig6 = floor(n/100000) - (floor(n/1000000)*10);
    set dig5 = floor(n/10000) -  (floor(n/100000)*10);
    set dig4 = floor(n/1000) -   (floor(n/10000)*10);
    set dig3 = floor(n/100) -    (floor(n/1000)*10);
    set dig2 = floor(n/10) -     (floor(n/100)*10);
    set dig1 = n - (floor(n / 10)*10);
        case
            when dig9=1 then set ans=concat(ans, 'One Hundred');
            when dig9=2 then set ans=concat(ans, 'Two Hundred');
            when dig9=3 then set ans=concat(ans, 'Three Hundred');
            when dig9=4 then set ans=concat(ans, 'Four Hundred');
            when dig9=5 then set ans=concat(ans, 'Five Hundred');
            when dig9=6 then set ans=concat(ans, 'Six Hundred');
            when dig9=7 then set ans=concat(ans, 'Seven Hundred');
            when dig9=8 then set ans=concat(ans, 'Eight Hundred');
            when dig9=9 then set ans=concat(ans, 'Nine Hundred');
            else set ans = ans;
        end case;
         if ans <> '' and dig8 =0 and dig7 = 0 then
            set ans=concat(ans, ' Million');
        end if;
    end if;
    if ans <> '' and dig8 > 0 then
        set ans=concat(ans, ' And ');
    end if;
    if dig8 = 1 then
        case
            when (dig8*10 + dig7) = 10 then set ans=concat(ans,'Ten Million');
            when (dig8*10 + dig7) = 11 then set ans=concat(ans,'Eleven Million');
            when (dig8*10 + dig7) = 12 then set ans=concat(ans,'Twelve Million');
            when (dig8*10 + dig7) = 13 then set ans=concat(ans,'Thirteen Million');
            when (dig8*10 + dig7) = 14 then set ans=concat(ans,'Fourteen Million');
            when (dig8*10 + dig7) = 15 then set ans=concat(ans,'Fifteen Million');
            when (dig8*10 + dig7) = 16 then set ans=concat(ans,'Sixteen Million');
            when (dig8*10 + dig7) = 17 then set ans=concat(ans,'Seventeen Million');
            when (dig8*10 + dig7) = 18 then set ans=concat(ans,'Eighteen Million');
            when (dig8*10 + dig7) = 19 then set ans=concat(ans,'Nineteen Million');
            else set ans=ans;
        end case;
    else
        if dig8 > 0 then
            case
                when dig8=2 then set ans=concat(ans, ' Twenty');
                when dig8=3 then set ans=concat(ans, ' Thirty');
                when dig8=4 then set ans=concat(ans, ' Fourty');
                when dig8=5 then set ans=concat(ans, ' Fifty');
                when dig8=6 then set ans=concat(ans, ' Sixty');
                when dig8=7 then set ans=concat(ans, ' Seventy');
                when dig8=8 then set ans=concat(ans, ' Eighty');
                when dig8=9 then set ans=concat(ans, ' Ninety');
                else set ans=ans;
            end case;
            if ans <> '' and dig7 =0 then
            set ans=concat(ans, ' Million');
            end if;
        end if;
        if ans <> '' and dig7 > 0 and dig8 =0 then
        set ans=concat(ans, ' And ');
        end if;
        if dig7 > 0 then
        case
            when dig7=1 then set ans=concat(ans, ' One Million');
            when dig7=2 then set ans=concat(ans, ' Two Million');
            when dig7=3 then set ans=concat(ans, ' Three Million');
            when dig7=4 then set ans=concat(ans, ' Four Million');
            when dig7=5 then set ans=concat(ans, ' Five Million');
            when dig7=6 then set ans=concat(ans, ' Six Million');
            when dig7=7 then set ans=concat(ans, ' Seven Million');
            when dig7=8 then set ans=concat(ans, ' Eight Million');
            when dig7=9 then set ans=concat(ans, ' Nine Million');
            else set ans = ans;
        end case;
    end if;
end if;
    if ans <> '' and dig6 > 0 then
        set ans=concat(ans, ' And ');
    end if;

    if dig6 > 0 then
        case
            when dig6=1 then set ans=concat(ans, 'One Hundred');
            when dig6=2 then set ans=concat(ans, 'Two Hundred');
            when dig6=3 then set ans=concat(ans, 'Three Hundred');
            when dig6=4 then set ans=concat(ans, 'Four Hundred');
            when dig6=5 then set ans=concat(ans, 'Five Hundred');
            when dig6=6 then set ans=concat(ans, 'Six Hundred');
            when dig6=7 then set ans=concat(ans, 'Seven Hundred');
            when dig6=8 then set ans=concat(ans, 'Eight Hundred');
            when dig6=9 then set ans=concat(ans, 'Nine Hundred');
            else set ans = ans;
        end case;
         if ans <> '' and dig4 =0 and dig5 = 0 then
            set ans=concat(ans, ' Thousand');
        end if;
    end if;
    if ans <> '' and dig5 > 0 then
        set ans=concat(ans, ' And ');
    end if;
    if dig5 = 1 then
        case
            when (dig5*10 + dig4) = 10 then set ans=concat(ans,'Ten Thousand');
            when (dig5*10 + dig4) = 11 then set ans=concat(ans,'Eleven Thousand');
            when (dig5*10 + dig4) = 12 then set ans=concat(ans,'Twelve Thousand');
            when (dig5*10 + dig4) = 13 then set ans=concat(ans,'Thirteen Thousand');
            when (dig5*10 + dig4) = 14 then set ans=concat(ans,'Fourteen Thousand');
            when (dig5*10 + dig4) = 15 then set ans=concat(ans,'Fifteen Thousand');
            when (dig5*10 + dig4) = 16 then set ans=concat(ans,'Sixteen Thousand');
            when (dig5*10 + dig4) = 17 then set ans=concat(ans,'Seventeen Thousand');
            when (dig5*10 + dig4) = 18 then set ans=concat(ans,'Eighteen Thousand');
            when (dig5*10 + dig4) = 19 then set ans=concat(ans,'Nineteen Thousand');
            else set ans=ans;
        end case;
    else
        if dig5 > 0 then
            case
                when dig5=2 then set ans=concat(ans, ' Twenty');
                when dig5=3 then set ans=concat(ans, ' Thirty');
                when dig5=4 then set ans=concat(ans, ' Fourty');
                when dig5=5 then set ans=concat(ans, ' Fifty');
                when dig5=6 then set ans=concat(ans, ' Sixty');
                when dig5=7 then set ans=concat(ans, ' Seventy');
                when dig5=8 then set ans=concat(ans, ' Eighty');
                when dig5=9 then set ans=concat(ans, ' Ninety');
                else set ans=ans;
            end case;
            if ans <> '' and dig4 =0 then
            set ans=concat(ans, ' Thousand');
            end if;
        end if;
        if ans <> '' and dig4 > 0 and dig5 =0 then
        set ans=concat(ans, ' And ');
        end if;
        if dig4 > 0 then
        case
            when dig4=1 then set ans=concat(ans, ' One Thousand');
            when dig4=2 then set ans=concat(ans, ' Two Thousand');
            when dig4=3 then set ans=concat(ans, ' Three Thousand');
            when dig4=4 then set ans=concat(ans, ' Four Thousand');
            when dig4=5 then set ans=concat(ans, ' Five Thousand');
            when dig4=6 then set ans=concat(ans, ' Six Thousand');
            when dig4=7 then set ans=concat(ans, ' Seven Thousand');
            when dig4=8 then set ans=concat(ans, ' Eight Thousand');
            when dig4=9 then set ans=concat(ans, ' Nine Thousand');
            else set ans = ans;
        end case;
    end if;
end if;
    if ans <> '' and dig3 > 0 then
        set ans=concat(ans, ' And ');
    end if;
    if dig3 > 0 then
        case
            when dig3=1 then set ans=concat(ans, 'One Hundred');
            when dig3=2 then set ans=concat(ans, 'Two Hundred');
            when dig3=3 then set ans=concat(ans, 'Three Hundred');
            when dig3=4 then set ans=concat(ans, 'Four Hundred');
            when dig3=5 then set ans=concat(ans, 'Five Hundred');
            when dig3=6 then set ans=concat(ans, 'Six Hundred');
            when dig3=7 then set ans=concat(ans, 'Seven Hundred');
            when dig3=8 then set ans=concat(ans, 'Eight Hundred');
            when dig3=9 then set ans=concat(ans, 'Nine Hundred');
            else set ans = ans;
        end case;
    end if;
    if ans <> '' and dig2 > 0 then
        set ans=concat(ans, ' And ');
    end if;
    if dig2 = 1 then
        case
            when (dig2*10 + dig1) = 10 then set ans=concat(ans,'Ten');
            when (dig2*10 + dig1) = 11 then set ans=concat(ans,'Eleven');
            when (dig2*10 + dig1) = 12 then set ans=concat(ans,'Twelve');
            when (dig2*10 + dig1) = 13 then set ans=concat(ans,'Thirteen');
            when (dig2*10 + dig1) = 14 then set ans=concat(ans,'Fourteen');
            when (dig2*10 + dig1) = 15 then set ans=concat(ans,'Fifteen');
            when (dig2*10 + dig1) = 16 then set ans=concat(ans,'Sixteen');
            when (dig2*10 + dig1) = 17 then set ans=concat(ans,'Seventeen');
            when (dig2*10 + dig1) = 18 then set ans=concat(ans,'Eighteen');
            when (dig2*10 + dig1) = 19 then set ans=concat(ans,'Nineteen');
            else set ans=ans;
        end case;
    else
        if dig2 > 0 then
            case
                when dig2=2 then set ans=concat(ans, ' Twenty');
                when dig2=3 then set ans=concat(ans, ' Thirty');
                when dig2=4 then set ans=concat(ans, ' Fourty');
                when dig2=5 then set ans=concat(ans, ' Fifty');
                when dig2=6 then set ans=concat(ans, ' Sixty');
                when dig2=7 then set ans=concat(ans, ' Seventy');
                when dig2=8 then set ans=concat(ans, ' Eighty');
                when dig2=9 then set ans=concat(ans, ' Ninety');
                else set ans=ans;
            end case;
        end if;
        if ans <> '' and dig1 > 0 and dig2 =0 then
        set ans=concat(ans, ' And ');
        end if;
        if dig1 > 0 then
            case
                when dig1=1 then set ans=concat(ans, ' One');
                when dig1=2 then set ans=concat(ans, ' Two');
                when dig1=3 then set ans=concat(ans, ' Three');
                when dig1=4 then set ans=concat(ans, ' Four');
                when dig1=5 then set ans=concat(ans, ' Five');
                when dig1=6 then set ans=concat(ans, ' Six');
                when dig1=7 then set ans=concat(ans, ' Seven');
                when dig1=8 then set ans=concat(ans, ' Eight');
                when dig1=9 then set ans=concat(ans, ' Nine');
                else set ans=ans;
            end case;
        end if;
    end if;

    return trim(ans);
    END