복붙노트

[SQL] 즉 임의의 숫자를 변환 [중복]

SQL

즉 임의의 숫자를 변환 [중복]

단어에 상관 없음을 변환 할 수있는 쿼리 나 기능이있다. 등 내가하는 SQL 서버 2005를 사용하고 천 하나에 1001 좋아.

해결법

  1. ==============================

    1.안녕하세요 .... 당신이 필요로하는 출력을 제공합니다 .... PROC 아래에는 시도

    안녕하세요 .... 당신이 필요로하는 출력을 제공합니다 .... PROC 아래에는 시도

    절차 :

    CREATE FUNCTION fnNumberToWords(@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 @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.fnNumberToWords( @Number % 10)
    
       WHEN @Number BETWEEN 100 AND 999  
    
         THEN  (dbo.fnNumberToWords( @Number / 100))+' Hundred '+
    
             dbo.fnNumberToWords( @Number % 100)
    
       WHEN @Number BETWEEN 1000 AND 999999  
    
         THEN  (dbo.fnNumberToWords( @Number / 1000))+' Thousand '+
    
             dbo.fnNumberToWords( @Number % 1000) 
    
       WHEN @Number BETWEEN 1000000 AND 999999999  
    
         THEN  (dbo.fnNumberToWords( @Number / 1000000))+' Million '+
    
             dbo.fnNumberToWords( @Number % 1000000)
    
       WHEN @Number BETWEEN 1000000000 AND 999999999999  
    
         THEN  (dbo.fnNumberToWords( @Number / 1000000000))+' Billion '+
    
             dbo.fnNumberToWords( @Number % 1000000000)
    
       WHEN @Number BETWEEN 1000000000000 AND 999999999999999  
    
         THEN  (dbo.fnNumberToWords( @Number / 1000000000000))+' Trillion '+
    
             dbo.fnNumberToWords( @Number % 1000000000000)
    
      WHEN @Number BETWEEN 1000000000000000 AND 999999999999999999  
    
         THEN  (dbo.fnNumberToWords( @Number / 1000000000000000))+' Quadrillion '+
    
             dbo.fnNumberToWords( @Number % 1000000000000000)
    
      WHEN @Number BETWEEN 1000000000000000000 AND 999999999999999999999  
    
         THEN  (dbo.fnNumberToWords( @Number / 1000000000000000000))+' Quintillion '+
    
             dbo.fnNumberToWords( @Number % 1000000000000000000)
    
            ELSE ' INVALID INPUT' END
    
    )
    
    
    
    SELECT @English = RTRIM(@English)
    
    SELECT @English = RTRIM(LEFT(@English,len(@English)-1))
    
                     WHERE RIGHT(@English,1)='-'
    
    RETURN (@English)
    
    END
    
    GO
    

    테스트 쿼리 .....

    SELECT NumberInEnglish=dbo.fnNumberToWords ( 18)
    
    SELECT NumberInEnglish=dbo.fnNumberToWords ( 67)
    
    SELECT NumberInEnglish=dbo.fnNumberToWords ( 947)
    
    -- Nine Hundred Forty-Seven
    
    SELECT NumberInEnglish=dbo.fnNumberToWords ( 984261)
    
    -- Nine Hundred Eighty-Four Thousand Two Hundred Sixty-One
    
    SELECT NumberInEnglish=dbo.fnNumberToWords ( 777999888)
    
    /* Seven Hundred Seventy-Seven Million Nine Hundred Ninety-Nine Thousand
    
       Eight Hundred Eighty-Eight */
    
    SELECT NumberInEnglish=dbo.fnNumberToWords ( 222777999888)
    
    SELECT NumberInEnglish=dbo.fnNumberToWords ( 555222777999888)
    
    SELECT NumberInEnglish=dbo.fnNumberToWords ( 7446744073709551616)
    

    소스 : http://www.sqlusa.com/bestpractices2008/number-to-words/

  2. ==============================

    2.당신은 오라클에서 작동이 시도 할 수 :

    당신은 오라클에서 작동이 시도 할 수 :

     select to_char(to_date(:number,'j'),'jsp') from dual;
    

    또는 그것을 수행하는 방법에 대한 자세한 링크 다시 여기를 참조

  3. ==============================

    3.이러한 쿼리가 없습니다. 당신은 당신의 자신의 프로 시저를 만들 필요가 있고 당신은 그것을 사용할 수 있습니다.

    이러한 쿼리가 없습니다. 당신은 당신의 자신의 프로 시저를 만들 필요가 있고 당신은 그것을 사용할 수 있습니다.

  4. from https://stackoverflow.com/questions/14486108/converting-any-number-in-words by cc-by-sa and MIT license