2013-11-01 5 views
2

У меня есть TELEPHONE_NUMBER как varchar так:Добавить "-" значению VARCHAR в SQL Server

Value : "1112223344" 

И мне нужно добавить "-" до значения, как это:

111-222-33-44 

Так как я могу добавить - к моему номеру телефона в моей хранимой процедуре SQL Server?

CREATE PROCEDURE SP_TELEPHONE_NUMBER 
    (@TELEPHONE_NUMBER VARCHAR(4000)) 
AS 
BEGIN 
    INSERT INTO DOSYA_ARSIV(TELEPHONE_NUMBER) 
    VALUES(@TELEPHONE_NUMBER) 
END 
+2

Не было бы лучше сохранить его как строку и обеспечить форматирование в пользовательском интерфейсе? – noobob

+0

Да, оставьте форматирование в приложение переднего конца – BlackTigerX

ответ

2

Просто альтернатива:

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) будет достаточно.

0

Использование STUFF функции на сервере MS SQL

SET @TELEPHONE_NUMBER=STUFF(STUFF(STUFF(@TELEPHONE_NUMBER,4,0,'-'),8,0,'-'),11,0,'-') 
+0

Одна вещь, которую я вижу неправильно, заключается в том, что если ввод короче, чем ожидалось, это дает значение «NULL». –

Смежные вопросы