I\'m trying to strip out the \"(\", \")\", \"-\", \"x\" or \"X\" \"ext\" and spaces from each phone number so I am left with only the first 10 digits or 1st 10 numbers of a
Another way to do it, if you didn't want to use a User Defined Function would be to use the REPLACE function, like so:
SELECT Phone, REPLACE(REPLACE(REPLACE(REPLACE(Phone,' ',''),'(',''),')',''),'-','') AS NewPhone
FROM Contacts
Although its a bit klunky, it should serve your purpose.
I think your only option is to create a UDF that does it. If you were using 2005+ you could create a CLR function to do it.
UDF:
create function dbo.RemoveNonNumericChar(@str varchar(500))
returns varchar(500)
begin
declare @startingIndex int
set @startingIndex=-1
while @startingIndex <> 0
begin
set @startingIndex= patindex('%[^0-9]%',@str)
if @startingIndex <> 0
begin
set @str = replace(@str,substring(@str,@startingIndex,1),'')
end
end
return @str
end
go
select dbo.RemoveNonNumericChar('(555) 555-5555 ext55555')
See if this works:
Declare @Expression varchar(15)
Declare @MyVariable varchar(20)
Set @Expression = '%[^0-9]%'
Set @MyVariable = '(555) 555-5555 ext55555'
While PatIndex(@Expression, @MyVariable) > 0
Set @MyVariable = Stuff(@MyVariable, PatIndex(@Expression, @MyVariable), 1, '')
Print @MyVariable
555555555555