From: Ben Ostrowsky Date: Mon, 12 Apr 2010 21:47:43 +0000 (+0000) Subject: Added function attempt_phone (TEXT,TEXT) RETURNS TEXT. First argument is legacy... X-Git-Url: http://git.equinoxoli.org/?p=migration-tools.git;a=commitdiff_plain;h=f9b56f271d3a372fc2b282fd84cd30bb8701f850;hp=6c655ffaf2ad51aa14259ce2b1ce2d6b3357a0c3 Added function attempt_phone (TEXT,TEXT) RETURNS TEXT. First argument is legacy phone data, second is area code to prepend. --- 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;