Это будет работать:
Сначала замените скобки и дефисы, затем добавьте их обратно.
DECLARE @Number varchar(25)
SELECT @Number = '(123)-456-7890'
SELECT SUBSTRING(REPLACE(REPLACE(REPLACE(@Number, '(', ''), ')', ''), '-', ''), 1, 3)
+ '-'
+ SUBSTRING(REPLACE(REPLACE(REPLACE(@Number, '(', ''), ')', ''), '-', ''), 4, 3)
+ '-'
+ SUBSTRING(REPLACE(REPLACE(REPLACE(@Number, '(', ''), ')', ''), '-', ''), 7, 4)
Примечание
Вы можете создать скалярную функцию для замены всех дефисов и скобок ... Это было бы более читабельно, чем:
DECLARE @Number varchar(25)
SELECT @Number = '(123)-456-7890'
SELECT SUBSTRING(StripCharacters(@Number), 1, 3)
+ '-'
+ SUBSTRING(StripCharacters(@Number), 4, 3)
+ '-'
+ SUBSTRING(StripCharacters(@Number), 7, 4)