aboutsummaryrefslogtreecommitdiff
path: root/challenge-331/luca-ferrari/plpgsql/ch-2.sql
diff options
context:
space:
mode:
authorLuca Ferrari <fluca1978@gmail.com>2025-07-24 14:29:01 +0200
committerLuca Ferrari <fluca1978@gmail.com>2025-07-24 15:14:16 +0200
commit1afc193f74481968858e2692a54fab5ea7c00c86 (patch)
treee8a8ab51f9359a401b5754f753f89401930ee2bc /challenge-331/luca-ferrari/plpgsql/ch-2.sql
parent864b54240022daa9c51f4d30e531f1950d3d348c (diff)
downloadperlweeklychallenge-club-1afc193f74481968858e2692a54fab5ea7c00c86.tar.gz
perlweeklychallenge-club-1afc193f74481968858e2692a54fab5ea7c00c86.tar.bz2
perlweeklychallenge-club-1afc193f74481968858e2692a54fab5ea7c00c86.zip
PWC 331
Task 1 Raku done Task 2 Raku done Task 1 PL/Perl done Task 2 PL/Perl done Task 1 PL/PgSQL done Task 2 PL/PgSQL done Task 1 PL/Java done Task 2 PL/Java done Task 1 Python done Task 2 Python done
Diffstat (limited to 'challenge-331/luca-ferrari/plpgsql/ch-2.sql')
-rw-r--r--challenge-331/luca-ferrari/plpgsql/ch-2.sql48
1 files changed, 48 insertions, 0 deletions
diff --git a/challenge-331/luca-ferrari/plpgsql/ch-2.sql b/challenge-331/luca-ferrari/plpgsql/ch-2.sql
new file mode 100644
index 0000000000..2b70f3e55e
--- /dev/null
+++ b/challenge-331/luca-ferrari/plpgsql/ch-2.sql
@@ -0,0 +1,48 @@
+--
+-- Perl Weekly Challenge 331
+-- Task 2
+-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-331>
+--
+
+CREATE SCHEMA IF NOT EXISTS pwc331;
+
+CREATE OR REPLACE FUNCTION
+pwc331.task2_plpgsql( l text, r text)
+RETURNS boolean
+AS $CODE$
+DECLARE
+ diffs int := 0;
+BEGIN
+ IF l = r THEN
+ RETURN true;
+ END IF;
+
+ IF length( l ) != length( r ) THEN
+ RETURN false;
+ END IF;
+
+ WITH
+ lt AS (
+ SELECT lc::text, row_number() over () as lr
+ FROM regexp_split_to_table( l, '' ) lc
+ )
+ , rt AS (
+ SELECT rc::text, row_number() over () as rr
+ FROM regexp_split_to_table( r, '' ) rc
+ )
+ SELECT count(*)
+ into diffs
+ FROM lt, rt
+ WHERE rr = lr
+ AND lc <> rc
+ ;
+
+ IF diffs > 2 THEN
+ RETURN false;
+ ELSE
+ RETURN true;
+ END IF;
+
+END
+$CODE$
+LANGUAGE plpgsql;