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
值。