代替手段:
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)
で十分だと思います。