diff options
| author | Luca Ferrari <fluca1978@gmail.com> | 2023-03-06 14:58:23 +0100 |
|---|---|---|
| committer | Luca Ferrari <fluca1978@gmail.com> | 2023-03-06 14:58:23 +0100 |
| commit | 54d3ee59eaf7a05196696b9582d43d046d2b1193 (patch) | |
| tree | 9c5d801d186e8570f3608334d66dcb63a304a951 /challenge-207/luca-ferrari/postgresql/ch-1.sql | |
| parent | e85bd4e453aeb9ea1bb5400f756c4c9ee05c73fb (diff) | |
| download | perlweeklychallenge-club-54d3ee59eaf7a05196696b9582d43d046d2b1193.tar.gz perlweeklychallenge-club-54d3ee59eaf7a05196696b9582d43d046d2b1193.tar.bz2 perlweeklychallenge-club-54d3ee59eaf7a05196696b9582d43d046d2b1193.zip | |
Task 1 sql done
Diffstat (limited to 'challenge-207/luca-ferrari/postgresql/ch-1.sql')
| -rw-r--r-- | challenge-207/luca-ferrari/postgresql/ch-1.sql | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/challenge-207/luca-ferrari/postgresql/ch-1.sql b/challenge-207/luca-ferrari/postgresql/ch-1.sql new file mode 100644 index 0000000000..477bf9703f --- /dev/null +++ b/challenge-207/luca-ferrari/postgresql/ch-1.sql @@ -0,0 +1,45 @@ +-- +-- Perl Weekly Challenge 207 +-- Task 1 +-- +-- See <https://perlweeklychallenge.org/blog/perl-weekly-challenge-207/> +-- + +CREATE SCHEMA IF NOT EXISTS pwc207; + +CREATE OR REPLACE FUNCTION +pwc207.task1_plpgsql( w text[] ) +RETURNS SETOF text +AS $CODE$ +DECLARE + current_word text; + current_row text; + letters_found int; +BEGIN + + CREATE TEMPORARY TABLE IF NOT EXISTS keyboard( k text ); + TRUNCATE keyboard; + INSERT INTO keyboard( k ) + VALUES( 'qwertyuiop' ), ( 'asdfghjkl' ), ( 'zxcvbnm' ); + + FOREACH current_word IN ARRAY w LOOP + FOR current_row IN SELECT k FROM keyboard LOOP + letters_found := 0; + + SELECT count(*) + INTO letters_found + FROM regexp_split_to_table( current_word, '' ) ww + JOIN regexp_split_to_table( current_row, '' ) kk + ON ww = kk; + + IF letters_found = length( current_word ) THEN + RETURN NEXT current_word; + EXIT; + END IF; + END LOOP; + END LOOP; + +RETURN; +END +$CODE$ +LANGUAGE plpgsql; |
