• Thought I'd try and see if there was an alternative:

    create table #phoneNums (phone varchar(50));

    insert into #phoneNums values ('800-555-1212');

    insert into #phoneNums values ('888-555-1212');

    insert into #phoneNums values ('336-555-1212');

    insert into #phoneNums values ('804-555-1212');

    insert into #phoneNums values ('652-555-1212');

    insert into #phoneNums values ('704-555-1212');

    insert into #phoneNums values ('919-555-1212');

    insert into #phoneNums values ('252-555-1212');

    insert into #phoneNums values ('877-555-1212');

    select parsename(replace(phone, '-', '.'),3) from #phoneNums;

    -- Another option to get all three pieces. Not sure which would be faster:

    select

    left(phone,charindex('-',phone) - 1) FirstPart,

    substring(phone, charindex('-',phone) + 1, (charindex('-',phone,charindex('-',phone) + 1) - charindex('-',phone)) - 1) SecondPart,

    right(phone, len(phone) - charindex('-',phone,charindex('-',phone) + 1)) ThirdPart

    from

    #phoneNums;

    drop table #phoneNums;