Общее решение для T-SQL (SS 2008+), чтобы удалить все, кроме набора разрешенных символов:
DECLARE @StrIn varchar(20)='(323)-555-1212'; -- input value
DECLARE @Allowed varchar(20)='%[0123456789]%'; -- pattern for allowed characters.
DECLARE @Result varchar(20)=''; -- result
DECLARE @I int = patindex(@Allowed, @StrIn);
WHILE (@I>0)
begin
SET @Result = @Result + SUBSTRING(@StrIn, @I, 1); -- add allowed charcter.
set @StrIn = SUBSTRING(@StrIn, @I+1, 20); -- take rest of string.
SET @i = patindex(@Allowed, @StrIn);
END
PRINT @Result;
Это может быть легко заключено в скалярную функцию. Полностью общая функция будет принимать список разрешенных символов, или вы можете жестко написать специальный код (например, этот).