Before I go into how to go altering strings in SQL, I would like to point out that you have to be careful when and how often you use the techniques below. A good rule to keep in mind is text manipulation is slow and painful to a server. If you can leave the text manipulation to your middle-ware or front end, that would be better. But we all have been stuck in a situation where we needed to alter a string before those two points, and so I bring you the following lesson.
96615551222 Ext. 249
+44 7930 555271
The first thing you need to do in a situation like this is become aware of what kind of data you’re looking at. Select out the first 100 or so rows and get an idea of what shape the data is in. In this case you can see there are several types of phone numbers entered.
I’ve limited the example above to just a few of the types of numbers you might find if you allowed users free form access to storing their phone numbers.
Parenthesis, dashes, and 3,3,4
Blank, null, or N/A
Parenthesis, dashes, spaces, and 3,3,4
So how can you deal with all these situations? Use SUBSTRING.
SUBSTRING (string, startPosition, length)
Using this function you can check out the first three characters of each phone number.
SELECT TOP 100
phone, SUBSTRING(phone, 1, 3) AS [area code]
When looking at the results, you will see that this only shows you the first three characters of the phone number. While the results appear to be accurate in some cases, you should immediately see the exception cases that this doesn’t handle. This solution cannot handle cases with parenthesis, international numbers, NULL, blank, or invalid numbers.
To proceed on this problem you’ll need a few more tools in your SQL tool belt. Check out other articles I’ve published on string manipulation. There you will discover how REPLACE, LTRIM, RTRIM, and more techniques for manipulating text strings can help solve this problem.