aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2022-08-22 12:08:06 +0200
committerLuca Ferrari <fluca1978@gmail.com>2022-08-22 12:08:06 +0200
commitbd411541890e1ad0685ce14b690007c8c911ea79 (patch)
treeb5ef956472bae75a1f4404cf9cb327955dccf907
parenta6c87bd08e681702a45eb02d505897169af68865 (diff)
downloadperlweeklychallenge-club-bd411541890e1ad0685ce14b690007c8c911ea79.tar.gz
perlweeklychallenge-club-bd411541890e1ad0685ce14b690007c8c911ea79.tar.bz2
perlweeklychallenge-club-bd411541890e1ad0685ce14b690007c8c911ea79.zip
Task 1 done in plpgsql
-rw-r--r--challenge-179/luca-ferrari/postgresql/ch-1.sql79
1 files changed, 79 insertions, 0 deletions
diff --git a/challenge-179/luca-ferrari/postgresql/ch-1.sql b/challenge-179/luca-ferrari/postgresql/ch-1.sql
new file mode 100644
index 0000000000..106916ec2c
--- /dev/null
+++ b/challenge-179/luca-ferrari/postgresql/ch-1.sql
@@ -0,0 +1,79 @@
+-- Perl Weekly Challenge 179
+-- Task 1
+
+CREATE SCHEMA IF NOT EXISTS pwc179;
+
+CREATE TABLE IF NOT EXISTS
+pwc179.number2words
+(
+ v int PRIMARY KEY
+ , t text
+);
+
+TRUNCATE pwc179.number2words;
+
+INSERT INTO pwc179.number2words
+VALUES
+ ( 1, 'first' )
+, ( 2, 'second' )
+, ( 3, 'third' )
+, ( 4, 'fourth' )
+, ( 5, 'fifth' )
+, ( 6, 'sixth' )
+, ( 7, 'seventh' )
+, ( 8, 'eigth' )
+, ( 9, 'nineth' )
+, ( 10, 'tenth' )
+, ( 11, 'eleventh' )
+, ( 12, 'twelveth' )
+, ( 13, 'thirteenth' )
+, ( 14, 'fourtineenth' )
+, ( 15, 'fifteenth' )
+, ( 16, 'sixteenth' )
+, ( 17, 'seventeenth' )
+, ( 18, 'eigthteenth' )
+, ( 19, 'nineteenth' )
+, ( 20, 'twentyth' )
+, ( 30, 'thirtyth' )
+, ( 40, 'fourtyth' )
+, ( 50, 'fiftyth' )
+, ( 60, 'sixtyth' )
+, ( 70, 'seventyth' )
+, ( 80, 'eightyth' )
+, ( 90, 'ninetyth' );
+
+
+CREATE OR REPLACE FUNCTION
+pwc179.task1_plpgsql( n int )
+RETURNS TEXT
+AS $CODE$
+
+DECLARE
+ w text;
+ s text;
+BEGIN
+ SELECT t
+ INTO w
+ FROM pwc179.number2words
+ WHERE v = n;
+
+ IF FOUND THEN
+ RETURN w;
+ ELSE
+ -- not found, compose the word
+ SELECT t
+ INTO w
+ FROM pwc179.number2words
+ WHERE v = ( n / 10 )::int;
+
+ SELECT t
+ INTO s
+ FROM pwc179.number2words
+ WHERE v = ( n % 10 )::int;
+
+ RETURN replace( w, 'th', 'ty') || s;
+ END IF;
+END
+
+$CODE$
+LANGUAGE plpgsql;