在SQL Server中为varchar值添加“ - ”

时间:2013-11-01 06:27:47

标签: sql-server stored-procedures varchar

我有一个TELEPHONE_NUMBER作为varchar,就像这样:

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 个答案:

答案 0 :(得分: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)这样的东西就足够了。

答案 1 :(得分:0)

在MS SQL服务器中使用STUFF函数

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