Sql server 加上「-&引用;在SQL Server中创建varchar值

Sql server 加上「-&引用;在SQL Server中创建varchar值,sql-server,stored-procedures,varchar,Sql Server,Stored Procedures,Varchar,我有一个电话号码作为varchar如下: Value : "1112223344" 111-222-33-44 我需要在值中加上“-”,如下所示: Value : "1112223344" 111-222-33-44 那么,如何将-添加到SQL Server存储过程中的电话号码值中呢 CREATE PROCEDURE SP_TELEPHONE_NUMBER (@TELEPHONE_NUMBER VARCHAR(4000)) AS BEGIN INSERT INTO DOSYA

我有一个
电话号码
作为
varchar
如下:

Value : "1112223344"
111-222-33-44
我需要在值中加上“-”,如下所示:

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
在MS SQL server中使用函数

SET @TELEPHONE_NUMBER=STUFF(STUFF(STUFF(@TELEPHONE_NUMBER,4,0,'-'),8,0,'-'),11,0,'-')
只是另一种选择:

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)
这样的东西就足够了

将其存储为字符串并在UI上提供格式不是更好吗?是的,将格式设置留给前端应用程序。我在这里看到的一个错误是,如果输入短于预期值,则会生成一个
NULL
值。