Number to words Convert SQL Query
Create Procedure NumberToWord
@Number AS BIGINT
AS
BEGIN
DECLARE @Digits INT
SET @Digits = @Number
IF (LEN(@Digits) > 4)
BEGIN
RAISERROR ('PLEASE ENTER WITH IN 4 DIGIT NUMBERS',12,-1)
END
ELSE IF (LEN(@Digits) <= 4)
BEGIN
DECLARE @NumWords TABLE(Number INT, Ones VARCHAR(15), Tens VARCHAR(15), Hundreds VARCHAR(15), Thousands VARCHAR(15))
INSERT INTO @NumWords
SELECT 0,'','','','' UNION ALL
SELECT 1,'ONE','TEN','ONE HUNDRED','ONE THOUSAND' UNION ALL
SELECT 2,'TWO','TWENTY','TWO HUNDRED','TWO THOUSAND' UNION ALL
SELECT 3,'THREE','THIRTY','THREE HUNDRED','THREE THOUSAND' UNION ALL
SELECT 4,'FOUR','FORTY','FOUR HUNDRED','FOUR THOUSAND' UNION ALL
SELECT 5,'FIVE','FIFTY','FIVE HUNDRED','FIVE THOUSAND' UNION ALL
SELECT 6,'SIX','SIXTY','SIX HUNDRED','SIX THOUSAND' UNION ALL
SELECT 7,'SEVEN','SEVENTY','SEVEN HUNDRED','SEVEN THOUSAND' UNION ALL
SELECT 8,'EIGHT','EIGHTY','EIGHT HUNDRED','EIGHT THOUSAND' UNION ALL
SELECT 9,'NINE','NINETY','NINE HUNDRED','NINETHOUSAND' UNION ALL
SELECT 10,'NINETEEN','','','' UNION ALL
SELECT 11,'ELEVEN','','','' UNION ALL
SELECT 12,'TWELVE','','','' UNION ALL
SELECT 13,'THIRTEEN','','','' UNION ALL
SELECT 14,'FOURTEEN','','','' UNION ALL
SELECT 15,'FIFTEEN','','','' UNION ALL
SELECT 16,'SIXTEEN','','','' UNION ALL
SELECT 17,'SEVENTEEN','','','' UNION ALL
SELECT 18,'EIGHTEEN','','','' UNION ALL
SELECT 19,'NINETEEN','','',''
SELECT RTRIM(MAX(CASE WHEN NUMBER = SUBSTRING(REVERSE(@Digits),4,1) THEN THOUSANDS ELSE '' END)) --FROM @NumWords
+SPACE(2)+ LTRIM(MAX(CASE WHEN NUMBER = SUBSTRING(REVERSE(@Digits),3,1) THEN HUNDREDS ELSE '' END) )
+SPACE(2)+ MAX(CASE WHEN RIGHT(@Digits,2) NOT BETWEEN 11 AND 19 AND NUMBER = SUBSTRING(REVERSE(@Digits),2,1) THEN TENS ELSE '' END)
+SPACE(2)+ MAX(CASE WHEN RIGHT(@Digits,2) NOT BETWEEN 11 AND 19 AND NUMBER = RIGHT(@Digits,1) THEN ONES
WHEN RIGHT(@Digits,2) BETWEEN 11 AND 19 AND NUMBER = RIGHT(@Digits,2) THEN ONES ELSE '' END)
As "Number to Words"
FROM @NUMWORDS
END
END
--EXEC NumberToWord 2010
@Number AS BIGINT
AS
BEGIN
DECLARE @Digits INT
SET @Digits = @Number
IF (LEN(@Digits) > 4)
BEGIN
RAISERROR ('PLEASE ENTER WITH IN 4 DIGIT NUMBERS',12,-1)
END
ELSE IF (LEN(@Digits) <= 4)
BEGIN
DECLARE @NumWords TABLE(Number INT, Ones VARCHAR(15), Tens VARCHAR(15), Hundreds VARCHAR(15), Thousands VARCHAR(15))
INSERT INTO @NumWords
SELECT 0,'','','','' UNION ALL
SELECT 1,'ONE','TEN','ONE HUNDRED','ONE THOUSAND' UNION ALL
SELECT 2,'TWO','TWENTY','TWO HUNDRED','TWO THOUSAND' UNION ALL
SELECT 3,'THREE','THIRTY','THREE HUNDRED','THREE THOUSAND' UNION ALL
SELECT 4,'FOUR','FORTY','FOUR HUNDRED','FOUR THOUSAND' UNION ALL
SELECT 5,'FIVE','FIFTY','FIVE HUNDRED','FIVE THOUSAND' UNION ALL
SELECT 6,'SIX','SIXTY','SIX HUNDRED','SIX THOUSAND' UNION ALL
SELECT 7,'SEVEN','SEVENTY','SEVEN HUNDRED','SEVEN THOUSAND' UNION ALL
SELECT 8,'EIGHT','EIGHTY','EIGHT HUNDRED','EIGHT THOUSAND' UNION ALL
SELECT 9,'NINE','NINETY','NINE HUNDRED','NINETHOUSAND' UNION ALL
SELECT 10,'NINETEEN','','','' UNION ALL
SELECT 11,'ELEVEN','','','' UNION ALL
SELECT 12,'TWELVE','','','' UNION ALL
SELECT 13,'THIRTEEN','','','' UNION ALL
SELECT 14,'FOURTEEN','','','' UNION ALL
SELECT 15,'FIFTEEN','','','' UNION ALL
SELECT 16,'SIXTEEN','','','' UNION ALL
SELECT 17,'SEVENTEEN','','','' UNION ALL
SELECT 18,'EIGHTEEN','','','' UNION ALL
SELECT 19,'NINETEEN','','',''
SELECT RTRIM(MAX(CASE WHEN NUMBER = SUBSTRING(REVERSE(@Digits),4,1) THEN THOUSANDS ELSE '' END)) --FROM @NumWords
+SPACE(2)+ LTRIM(MAX(CASE WHEN NUMBER = SUBSTRING(REVERSE(@Digits),3,1) THEN HUNDREDS ELSE '' END) )
+SPACE(2)+ MAX(CASE WHEN RIGHT(@Digits,2) NOT BETWEEN 11 AND 19 AND NUMBER = SUBSTRING(REVERSE(@Digits),2,1) THEN TENS ELSE '' END)
+SPACE(2)+ MAX(CASE WHEN RIGHT(@Digits,2) NOT BETWEEN 11 AND 19 AND NUMBER = RIGHT(@Digits,1) THEN ONES
WHEN RIGHT(@Digits,2) BETWEEN 11 AND 19 AND NUMBER = RIGHT(@Digits,2) THEN ONES ELSE '' END)
As "Number to Words"
FROM @NUMWORDS
END
END
--EXEC NumberToWord 2010
No comments:
Post a Comment