[SQL] 즉 임의의 숫자를 변환 [중복]
SQL즉 임의의 숫자를 변환 [중복]
단어에 상관 없음을 변환 할 수있는 쿼리 나 기능이있다. 등 내가하는 SQL 서버 2005를 사용하고 천 하나에 1001 좋아.
해결법
-
==============================
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.당신은 오라클에서 작동이 시도 할 수 :
당신은 오라클에서 작동이 시도 할 수 :
select to_char(to_date(:number,'j'),'jsp') from dual;
또는 그것을 수행하는 방법에 대한 자세한 링크 다시 여기를 참조
-
==============================
3.이러한 쿼리가 없습니다. 당신은 당신의 자신의 프로 시저를 만들 필요가 있고 당신은 그것을 사용할 수 있습니다.
이러한 쿼리가 없습니다. 당신은 당신의 자신의 프로 시저를 만들 필요가 있고 당신은 그것을 사용할 수 있습니다.
from https://stackoverflow.com/questions/14486108/converting-any-number-in-words by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 스파크 dataframe 그룹화는 널 (null)을 계산하지 않습니다 (0) | 2020.07.19 |
---|---|
[SQL] 고유의 페이지 뷰를 추적하기위한 PHP 세션 (0) | 2020.07.19 |
[SQL] 외래 키 제약 조건의 참조 필드 (들)을 찾기 (0) | 2020.07.19 |
[SQL] 어떻게 동시 액세스에 테이블의 행의 특정 NR를 표시합니다 (0) | 2020.07.19 |
[SQL] 여러 자체 조인 결과에 GROUP에 따라 (0) | 2020.07.19 |