From f9b56f271d3a372fc2b282fd84cd30bb8701f850 Mon Sep 17 00:00:00 2001 From: Ben Ostrowsky Date: Mon, 12 Apr 2010 21:47:43 +0000 Subject: [PATCH] Added function attempt_phone (TEXT,TEXT) RETURNS TEXT. First argument is legacy phone data, second is area code to prepend. --- sql/base/base.sql | 18 ++++++++++++++++++ 1 files changed, 18 insertions(+), 0 deletions(-) diff --git a/sql/base/base.sql b/sql/base/base.sql index e2e048b..59eec2f 100644 --- a/sql/base/base.sql +++ b/sql/base/base.sql @@ -692,3 +692,21 @@ CREATE OR REPLACE FUNCTION migration_tools.add_codabar_checkdigit (TEXT) RETURNS my $checkdigit = ($remainder == 0) ? $remainder : 10 - $remainder; return $barcode . $checkdigit; $$ LANGUAGE PLPERL STRICT STABLE; + +CREATE OR REPLACE FUNCTION migration_tools.attempt_phone (TEXT,TEXT) RETURNS TEXT AS $$ + DECLARE + phone TEXT := $1; + areacode TEXT := $2; + output TEXT := ''; + n_digits INTEGER := 0; + BEGIN + output := REGEXP_REPLACE(phone, '[^0-9]*([0-9]{3})[^0-9]*([0-9]{3})[^0-9]*([0-9]{4})', E'\\1-\\2-\\3'); + n_digits := LENGTH(REGEXP_REPLACE(output, '[^0-9]', '', 'g')); + IF n_digits = 7 THEN + RETURN (areacode || '-' || output); + ELSE + RETURN output; + END IF; + END; + +$$ LANGUAGE PLPGSQL STRICT VOLATILE; -- 1.7.2.5