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;