본문 바로가기
MS-SQL/Function

MSSQL 어설프고 허접하게 만든 RegEx Replace 역할 function 예제 -0-

by Hwoarang757 2016. 5. 12.

 

  1. 목적 : 정규식형태를 이용하여 포함되는 기호나 문자의 목록을 특정문자나 공백으로 치환 하도록 한다.

 

  1. 함수명 : dbo.GetRegExReplace

 

  1.  함수 결과 스칼라 리턴 형식 - VarChar(MAX)

 

  1. Parameter (Argument )

     4-1 @TargetText VarChar(MAX)    - 원본 문자열

     4-2 @Expression VarChar(80) - 정규 형태 문자열

   4-3 @ReplaceValue VarChar(80) - 교체할 문자

1. a-z 까지 포함 되는 문자열 제거 
SELECT dbo.GetRegExReplace('1^28a45b840c92-3d0_ 9 ','[^-_]','')

2. a-z 를 제외한 문자열 제거 
SELECT dbo.GetRegExReplace('128a45b840c923d09','[^a-z]','')

-- 아래 프로시져 내용입니다 ;;;

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:		김영대 
-- Create date: 2016-05-12
-- Description:	RegEx Replace 역할 함수 
-- =============================================
CREATE FUNCTION dbo.GetRegExReplace
(
@TargetText VarChar(MAX), -- 원본 문자열 값 
@Expression VarChar(80),-- 정규 식 형태 문자열 	
@ReplaceValue VarChar(80)  -- 교체할 문자 
)
RETURNS VARCHAR(MAX)
AS
BEGIN

	DECLARE @ReturnValue VARCHAR(MAX) = @TargetText;

	IF ISNULL(@ReturnValue,'') =  '' 
	   RETURN @ReturnValue;

	WHILE 1 =1 
	BEGIN
		
	  IF PATINDEX('%' + @Expression + '%' , @ReturnValue) = 0 
	   BREAK;

	   SET @ReturnValue = STUFF(@ReturnValue,PATINDEX('%' + @Expression + '%' , @ReturnValue),1,@ReplaceValue)
	END 
	   
	   RETURN @ReturnValue
	

END
GO