Skip to main content
Announcements
Global Transformation Awards! Applications are now open. Submit Entry
cancel
Showing results for 
Search instead for 
Did you mean: 
drminaker
Contributor III
Contributor III

Separating area code from phone number into new field

Hi everyone,

I'm trying to clean phone numbers by doing two things:

  • Removing anything that's not a number from the Phone number column - no problem I used this code:

           purgechar([Phone number], ')(-') as [Phone number]

  • Problem is, when the area code is in the Phone number column (like row 2), I want to remove it and add it to the Area code column (or into any other new field). This is where I'm stuck, I've tried various iterations of if(len, substring, purgechar and just can't get this to work.

Any help appreciated, as always. Thanks!


R.

Area codePhone number
14161234567
24161234567
3(416)1234567
1 Solution

Accepted Solutions
sunny_talwar

Sample script

Table:

LOAD Sno,

If(Len(Purgechar([Phone number], ')(-')) = 10, Right(Purgechar([Phone number], ')(-'), 7), Purgechar([Phone number], ')(-')) as [Phone number],

If(Len(Trim([Area code])) > 0, [Area code], If(Len(Purgechar([Phone number], ')(-')) = 10, Left(Purgechar([Phone number], ')(-'), 3))) as [Area code];

LOAD * INLINE [

    Sno, Area code, Phone number

    1, 416, 1234567

    2, , 4161234567

    3, , (416)1234567

];

Capture.PNG

View solution in original post

8 Replies
its_anandrjs

Which is your actual data row.

its_anandrjs

In row no 2 how you differentiate 416 is the code and 1234567 is the phone number.

sunny_talwar

May be like this

If(Len(Purgechar([Phone number], ')(-')) = 10, Right(Purgechar([Phone number], ')(-'), 7), Purgechar([Phone number], ')(-')) as [Phone number]

sunny_talwar

And this for Area Code...

If(Len(Trim([Area Code])) > 0, [Area Code], If(Len(Purgechar([Phone number], ')(-')) = 10, Left(Purgechar([Phone number], ')(-'), 3))) as [Area Code]

sunny_talwar

Sample script

Table:

LOAD Sno,

If(Len(Purgechar([Phone number], ')(-')) = 10, Right(Purgechar([Phone number], ')(-'), 7), Purgechar([Phone number], ')(-')) as [Phone number],

If(Len(Trim([Area code])) > 0, [Area code], If(Len(Purgechar([Phone number], ')(-')) = 10, Left(Purgechar([Phone number], ')(-'), 3))) as [Area code];

LOAD * INLINE [

    Sno, Area code, Phone number

    1, 416, 1234567

    2, , 4161234567

    3, , (416)1234567

];

Capture.PNG

its_anandrjs

Some of the questions

1. What is the length of the Phone no. are they fix.

2. Open brackets close and open are in fix place

LOAD *,

PurgeChar( SubField([Phone number],')',1),'(') as [Area Code],

SubField([Phone number],')',-1) as [New Phone];

LOAD * Inline

[

Area code, Phone number

1 ,  416 1234567

2 ,  4161234567

3 , (416)1234567

];

its_anandrjs

If they are in fix Area Code = 3 and Number = 7

Then

Data:

LOAD *,

PurgeChar( SubField([Phone number],')',1),'(') as [Area Code],

SubField([Phone number],')',-1) as [New Phone];

LOAD * Inline

[

Area code, Phone number

1 ,  416 1234567

2 , 4161234567

3 , (416)1234567

];

NoConcatenate

Final:

LOAD

If(len([Area Code]) = 3, [Area Code]) as [Area Code],

if(len([New Phone]) = 7,[New Phone]) as [New Phone]

Resident Data;

DROP Table Data;

drminaker
Contributor III
Contributor III
Author

Apologies for the extreme delay on replying to this, but this code works perfect. Thanks so much!

R.