[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