pears.PhoneUpdate

Generated schema reference. Regenerate this page from the SQL unload; keep hand-maintained business notes in the narrative namespace.

CREATE FUNCTION "pears"."PhoneUpdate"( IN "Number" CHAR(50) ) 
RETURNS CHAR(50)
BEGIN
  DECLARE "WorkNum" CHAR(50);
  //// Tidy up the NUMBER
  SET "WorkNum" = "replacestr"("trim"("Number"),'-','',0);
  SET "WorkNum" = "replacestr"("WorkNum",' ','',0);
  SET "WorkNum" = "replacestr"("WorkNum",'(','',0);
  SET "WorkNum" = "replacestr"("WorkNum",')','',0);
  //// CHECK now ALL numbers
  IF "patindex"('%[^0-9]%',"WorkNum") <> 0 THEN RETURN("Number")
  END IF;
  ////
  //// CHECK FOR London (4 CHAR codes)
  CASE "left"("WorkNum",4)
  WHEN '0171' THEN SET "WorkNum" = '020 7'+"substr"("WorkNum",5,3)+' '+"substr"("WorkNum",8,43);
    RETURN("WorkNum")
  WHEN '0181' THEN SET "WorkNum" = '020 8'+"substr"("WorkNum",5,3)+' '+"substr"("WorkNum",8,43);
    RETURN("WorkNum")
  END CASE;
  ////
  //// CHECK Martinstown, Carrickmore & Limavady (Possible confusion WITH Ballymena, Omagh & Londonderry below)
  CASE "left"("WorkNum",6) //*Martinstown*//
  WHEN '012667' THEN SET "WorkNum" = '028 217'+"substr"("WorkNum",7,1)+' '+"substr"("WorkNum",8,46);
    RETURN("WorkNum") //*Limavady*//
  WHEN '015047' THEN SET "WorkNum" = '028 777'+"substr"("WorkNum",7,1)+' '+"substr"("WorkNum",8,46);
    RETURN("WorkNum") //*Carrickmore*//
  WHEN '016627' THEN SET "WorkNum" = '028 807'+"substr"("WorkNum",7,1)+' '+"substr"("WorkNum",8,46);
    RETURN("WorkNum")
  END CASE;
  ////
  //// CHECK FOR other UK Cities (5 CHAR STD codes)
  CASE "left"("WorkNum",5) //*Cardiff*//
  WHEN '01222' THEN SET "WorkNum" = '029 20'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Coventry*//
  WHEN '01203' THEN SET "WorkNum" = '024 76'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Portsmouth*//
  WHEN '01705' THEN SET "WorkNum" = '023 92'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Southampton*//
  WHEN '01703' THEN SET "WorkNum" = '023 80'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Belfast*//
  WHEN '01232' THEN SET "WorkNum" = '028 90'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Ballymena - check 5 or 6 digit local number*//
  WHEN '01266' THEN IF "length"("WorkNum") = 10 THEN
      SET "WorkNum" = '028 256'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46)
    ELSE SET "WorkNum" = '028 25'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45)
    END IF;
    RETURN("WorkNum") //*Larne*//
  WHEN '01754' THEN SET "WorkNum" = '028 28'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Londonderry*//
  WHEN '01504' THEN SET "WorkNum" = '028 71'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Colraine - check 5 or 6 digit local number*//
  WHEN '01265' THEN IF "length"("WorkNum") = 10 THEN
      SET "WorkNum" = '028 703'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46)
    ELSE SET "WorkNum" = '028 70'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45)
    END IF;
    RETURN("WorkNum") //*Magherafelt - check 5 or 6 digit local number*//
  WHEN '01648' THEN IF "length"("WorkNum") = 10 THEN
      SET "WorkNum" = '028 796'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46)
    ELSE SET "WorkNum" = '028 79'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45)
    END IF;
    RETURN("WorkNum") //*Bangor*//
  WHEN '01247' THEN SET "WorkNum" = '028 91'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Lisburn*//
  WHEN '01846' THEN SET "WorkNum" = '028 92'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Ballyclare*//
  WHEN '01960' THEN SET "WorkNum" = '028 93'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Antrim*//
  WHEN '01849' THEN SET "WorkNum" = '028 94'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Saintfield*//
  WHEN '01238' THEN SET "WorkNum" = '028 97'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Omagh*//
  WHEN '01662' THEN SET "WorkNum" = '028 82'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Dungannon*//
  WHEN '01868' THEN SET "WorkNum" = '028 87'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Downpatrick*//
  WHEN '01396' THEN SET "WorkNum" = '028 44'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Newry - check 5 or 6 digit local number*//
  WHEN '01693' THEN IF "length"("WorkNum") = 10 THEN
      SET "WorkNum" = '028 302'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46)
    ELSE SET "WorkNum" = '028 30'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45)
    END IF;
    RETURN("WorkNum") //*Armagh*//
  WHEN '01861' THEN SET "WorkNum" = '028 37'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Portadown*//
  WHEN '01762' THEN SET "WorkNum" = '028 38'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum") //*Enniskillen*//
  WHEN '01365' THEN SET "WorkNum" = '028 66'+"substr"("WorkNum",6,2)+' '+"substr"("WorkNum",8,45);
    RETURN("WorkNum")
  END CASE;
  //// CHECK FOR other UK Cities (6 CHAR STD codes)
  CASE "left"("WorkNum",6) //*Ballycastle*//
  WHEN '012657' THEN SET "WorkNum" = '028 207'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46);
    RETURN("WorkNum") //*Ballymoney*//
  WHEN '012656' THEN SET "WorkNum" = '028 276'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46);
    RETURN("WorkNum") //*Kilrea*//
  WHEN '012665' THEN SET "WorkNum" = '028 295'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46);
    RETURN("WorkNum") //*Newtonstewart*//
  WHEN '016626' THEN SET "WorkNum" = '028 816'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46);
    RETURN("WorkNum") //*Ballygawley*//
  WHEN '016625' THEN SET "WorkNum" = '028 855'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46);
    RETURN("WorkNum") //*Cookstown*//
  WHEN '016487' THEN SET "WorkNum" = '028 867'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46);
    RETURN("WorkNum") //*Fivemiletown*//
  WHEN '013655' THEN SET "WorkNum" = '028 895'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46);
    RETURN("WorkNum") //*Banbridge*//
  WHEN '018206' THEN SET "WorkNum" = '028 406'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46);
    RETURN("WorkNum") //*Rostrevor*//
  WHEN '016937' THEN SET "WorkNum" = '028 417'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46);
    RETURN("WorkNum") //*Kircubbin*//
  WHEN '012477' THEN SET "WorkNum" = '028 427'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46);
    RETURN("WorkNum") //*Newcastle*//
  WHEN '013967' THEN SET "WorkNum" = '028 437'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46);
    RETURN("WorkNum") //*Lisnaskea*//
  WHEN '013657' THEN SET "WorkNum" = '028 677'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46);
    RETURN("WorkNum") //*Kesh*//
  WHEN '013656' THEN SET "WorkNum" = '028 686'+"substr"("WorkNum",6,1)+' '+"substr"("WorkNum",7,46);
    RETURN("WorkNum")
  END CASE;
  //// CHECK FOR OLD STYLE mobile numbers
  IF "left"("WorkNum",4) = '0374' AND "left"("WorkNum",5) <> '03745' THEN
    SET "WorkNum" = '07'+"substr"("WorkNum",2,3)+' '+"substr"("WorkNum",5,46);
    RETURN("WorkNum")
  END IF;
  IF "left"("WorkNum",2) = '04' THEN
    SET "WorkNum" = '07'+"substr"("WorkNum",2,3)+' '+"substr"("WorkNum",5,46);
    RETURN("WorkNum")
  END IF;
  IF "left"("WorkNum",4) IN( '0585','0589','0705','0802','0831','0850','0860','0881','0973','0976','0966' ) THEN
    SET "WorkNum" = '07'+"substr"("WorkNum",2,3)+' '+"substr"("WorkNum",5,46);
    RETURN("WorkNum")
  END IF;
  IF "left"("WorkNum",5) IN( '08362','08363','08365','08366','08367' ) THEN
    SET "WorkNum" = '07'+"substr"("WorkNum",2,3)+' '+"substr"("WorkNum",5,46);
    RETURN("WorkNum")
  END IF;
  RETURN("Number")
END
  • database/functions/pears_phoneupdate.txt
  • Last modified: 2026/08/07 19:24
  • by 127.0.0.1