How do I Normalize Phone Numbers?
Recent question about Phone Numbers and how to remove non-number characters from a byte container, raised some interesting solutions to normalizing phone numbers:
Considering the following data, you see that the phone numbers have all sorts of different formats.
>in myphone >list >xeq >IN myphone (0) >OUT $NULL (0) PHONENUM = #123.456.7890 >IN myphone (1) >OUT $NULL (1) PHONENUM = (123)567-1234 >IN myphone (2) >OUT $NULL (2) PHONENUM = (321).123.5678 IN=3, OUT=3. CPU-Sec=1. Wall-Sec=1.The steps in normalizing the data is to remove the non-numeric numbers:
>in myphone >set cleanchar "You can then use an edit mask to format it in the same way. You do need to redefine the field being edited with a define of the number with just the length of the phone number:" >clean "^0:^47","^58:^255" >def newphone,1,14 >ext phonenum=$clean(phonenum) >out newphone,link >xeq IN=3, OUT=3. CPU-Sec=1. Wall-Sec=1. >in newphone >list >xeq >IN newphone (0) >OUT $NULL (0) PHONENUM = 1234567890 >IN newphone (1) >OUT $NULL (1) PHONENUM = 1235671234 >IN newphone (2) >OUT $NULL (2) PHONENUM = 3211235678 IN=3, OUT=3. CPU-Sec=1. Wall-Sec=1.
>in newphone >form File: newphone (SD Version B.00.00) Has linefeeds Entry: Offset PHONENUM X14 1 Entry Length: 14 Blocking: 1 >def my,phonenum,10 >def targ,1,12 >ext targ=$edit(my,"xxx.xxx.xxxx") >list >xeq >IN newphone (0) >OUT $NULL (0) TARG = 123.456.7890 >IN newphone (1) >OUT $NULL (1) TARG = 123.567.1234 >IN newphone (2) >OUT $NULL (2) TARG = 321.123.5678 IN=3, OUT=3. CPU-Sec=1. Wall-Sec=1.
No comments:
Post a Comment