aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2023-05-08 10:54:32 +0200
committerLuca Ferrari <fluca1978@gmail.com>2023-05-08 10:54:32 +0200
commitaa4c667437e5674d217fc9f008ad2430a3caece1 (patch)
tree77fc2a21c4eaec0b0ca8688efef8ff461191a91d
parent3466eb55a5bb931e95ef764861b6aa29fd2a7095 (diff)
downloadperlweeklychallenge-club-aa4c667437e5674d217fc9f008ad2430a3caece1.tar.gz
perlweeklychallenge-club-aa4c667437e5674d217fc9f008ad2430a3caece1.tar.bz2
perlweeklychallenge-club-aa4c667437e5674d217fc9f008ad2430a3caece1.zip
Task 1 plpgsql
-rw-r--r--challenge-216/luca-ferrari/postgresql/ch-1.sql33
1 files changed, 33 insertions, 0 deletions
diff --git a/challenge-216/luca-ferrari/postgresql/ch-1.sql b/challenge-216/luca-ferrari/postgresql/ch-1.sql
new file mode 100644
index 0000000000..b929a9a3fb
--- /dev/null
+++ b/challenge-216/luca-ferrari/postgresql/ch-1.sql
@@ -0,0 +1,33 @@
+--
+-- Perl Weekly Challenge 216
+-- Task 1
+--
+-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-216/>
+--
+
+CREATE SCHEMA IF NOT EXISTS pwc216;
+
+CREATE OR REPLACE FUNCTION
+pwc216.task1_plpgsql( rc text, strings text[] )
+RETURNS SETOF TEXT
+AS $CODE$
+DECLARE
+ current_word text;
+ matches int;
+BEGIN
+ FOREACH current_word IN ARRAY strings LOOP
+ SELECT count(*)
+ INTO matches
+ FROM regexp_split_to_table( rc, '' ) r
+ , regexp_split_to_table( current_word, '' ) w
+ WHERE r = w;
+
+ IF matches = length( current_word ) THEN
+ RETURN NEXT current_word;
+ END IF;
+ END LOOP;
+
+RETURN;
+END
+$CODE$
+LANGUAGE plpgsql;