[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