我有一个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
答案 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,'-')