[MS-SQL] 전화번호에 하이픈 넣기
데이터를 정리하다 보면 이것저것 자잘하게 신경 써야할 부분이 생긴다.
전화번호 같은 경우가 그러한데
하이픈을 쓰는 사람도 있고 아닌사람도 있고
애초에 입력 받을때 룰을 잘 정하면 될 일이지만
다른 시스템에서 쓰던 데이터를 마이그레이션 할땐 신경을 써야하긴 매한가지다
그럴 때 사용해 보자
아래 함수는 전화번호를 받아서 하이픈을 넣어주는 함수이다.
USE [KIM_KITTY]
GO
/****** Object: UserDefinedFunction [dbo].[fn_GetTelNo] Script Date: 03/04/2019 19:25:41 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- ====================================================================
-- 작성일 : 2019.03.04
-- 작성자 : 김 키티
-- 내 용 : 전화번호 하이픈 넣어주는 역할의 함수
-- ====================================================================
CREATE FUNCTION [dbo].[fn_GetTelNo] (
@iTelNo VARCHAR(20) = ''
) RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @wTelNo VARCHAR(20)
, @wReturn VARCHAR(20)
SELECT @wTelNo = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@iTelNo, CHAR(13)+CHAR(10), ''), ' ', ''), '-', ''), '.', ''), '/', ''), ',', '')
IF ISNUMERIC(@wTelNo) = 0 OR LEN(@wTelNo) < 7 OR LEN(@wTelNo) > 11 BEGIN
RETURN @iTelNo
END
SELECT @wReturn =
CASE WHEN LEN(@wTelNo) = 7
THEN SUBSTRING(@wTelNo, 1, 3)+'-'+SUBSTRING(@wTelNo, 4, 4)
WHEN LEN(@wTelNo) = 8
THEN SUBSTRING(@wTelNo, 1, 4)+'-'+SUBSTRING(@wTelNo, 5, 4)
WHEN LEN(@wTelNo) = 9
THEN SUBSTRING(@wTelNo, 1, 2)+'-'+SUBSTRING(@wTelNo, 3, 3)+'-'+SUBSTRING(@wTelNo, 6, 4)
WHEN LEN(@wTelNo) = 10
THEN CASE WHEN LEFT(@wTelNo, 2) = '02'
THEN SUBSTRING(@wTelNo, 1, 2)+'-'+SUBSTRING(@wTelNo, 3, 4)+'-'+SUBSTRING(@wTelNo, 7, 4)
ELSE SUBSTRING(@wTelNo, 1, 3)+'-'+SUBSTRING(@wTelNo, 4, 3)+'-'+SUBSTRING(@wTelNo, 7, 4)
END
WHEN LEN(@wTelNo) = 11
THEN SUBSTRING(@wTelNo, 1, 3)+'-'+SUBSTRING(@wTelNo, 4, 4)+'-'+SUBSTRING(@wTelNo, 8, 4)
ELSE @iTelNo
END
RETURN @wReturn
END
■ 사용법
SELECT dbo.fn_GetTelNo('0101234567')
--출력 : 010-123-4567
