Просто альтернатива:
select SUBSTRING('1112223344',1,3)+'-'+
SUBSTRING('1112223344',4,3)+'-'+
SUBSTRING('1112223344',7,2)+'-'+
SUBSTRING('1112223344',9,2)
В вашем случае:
CREATE PROCEDURE SP_TELEPHONE_NUMBER
(@TELEPHONE_NUMBER VARCHAR(4000))
AS
BEGIN
INSERT INTO DOSYA_ARSIV(TELEPHONE_NUMBER)
VALUES
(
SUBSTRING(@TELEPHONE_NUMBER,1,3)+'-'+
SUBSTRING(@TELEPHONE_NUMBER,4,3)+'-'+
SUBSTRING(@TELEPHONE_NUMBER,7,2)+'-'+
SUBSTRING(@TELEPHONE_NUMBER,9,2)
)
END
Как noobob упомянул в своем комментарий, у вас может быть это как тип INT (INT, BIGINT или что-то подобное) и просто обрабатывать способ отображения в интерфейсе. Например, в C# вы бы как:
TELEPHONE_NUMBER.ToString("###-###-##-##");
Другой комментарий будет то, что определение ожидаемого аргумент VARCHAR(4000)
это слишком много. Хотя это может быть не очень плохо, неплохо определить аргументы или переменные как можно ближе к ожидаемому вводу. В вашем случае я бы сказал, что чего-то вроде VARCHAR(30)
будет достаточно.
Не было бы лучше сохранить его как строку и обеспечить форматирование в пользовательском интерфейсе? – noobob
Да, оставьте форматирование в приложение переднего конца – BlackTigerX