You can use the find function to find the substring. Check Language Reference Dictionary for the syntax for this. And you can output the results to 2 datasets if you want to view the records. E.g. something like
data strange_numbers (keep = phone_number) ok_numbers(keep = phone_number);
if (find(phone_number, "HOM") > 0) or (find(teamid, "WORK") then output strange_numbers;
Or else you could use the retain statement to just get a running count of records that match and just output that as a total number.
If you want to get a bit more sophisticated you can use the prxparse functions to find a pattern in the data. This is more flexible. You could search for any letters for example or many different types of patterns.
If all you want to do is find out is about the whole universe of text that people have added to the phone field, I'd be very tempted to compress out all the digits and punctuation from the phone number and then just run a proc freq on the remaining text. If what you want to do is REMOVE all the ancillary text, then you could compress that out as well, creating a new variable. Both techniques are shown below.
** next, compress out the digits, making the text_w_phone variable;
** and compress out the alpha characters, making the phone_only variable;
phone = upcase(phone);
text_w_phone = left(compress(phone,,'dp'));
phone_only = left(compress(phone,,'A'));