MSSQL DB에서 전자결재, 출력물 등 조회쿼리 결과를 Mask를 적용하여 데이터를 연동하는 경우

아래와 같이 사용자 정의 함수(스칼라 함수)를 등록하여 조회 쿼리에 적용하면 쉽게 관리할 수 있습니다.

 

CREATE FUNCTION dbo._ufnMaskConv  
(      
    @MaskFormat     NVARCHAR(100),  
    @String         NVARCHAR(100)  
)   RETURNS NVARCHAR(100)  
AS      
BEGIN  
  
    DECLARE @RltString  NVARCHAR(10),  
            @Cnt        INT,  
            @Rs         NCHAR(1)  
  
    SELECT @RltString = ''  
  
    -- 공백 or Null 인경우 RETURN
    IF ISNULL(@String, '') = ''  
        RETURN ISNULL(@String, '')  
  
    WHILE DATALENGTH(@MaskFormat) > 0  
    BEGIN  
        SELECT @Cnt = PATINDEX('%[^0-9,a-z,A-Z]%', @MaskFormat)  
  
        SELECT @Rs = SUBSTRING(@MaskFormat, @Cnt, 1)  
        SELECT @String = REPLACE(@String, @Rs, '')  
  
        SELECT @RltString     = @RltString +  CASE @Cnt WHEN 0 THEN @String   
                                                        ELSE LEFT(@String, @Cnt - 1) + SUBSTRING(@MaskFormat, @Cnt, 1) END  
  
        IF @Cnt = 0 BREAK  
  
        SELECT @String      = SUBSTRING(@String, @Cnt, DATALENGTH(@String) - @Cnt - 1)  
  
        SELECT @MaskFormat  = SUBSTRING(@MaskFormat, @Cnt + 1, DATALENGTH(@MaskFormat) - @Cnt)  
    END  
  
  	-- Return the result of the function
    RETURN @RltString  
  
END  

-- 사용예제
-- 1.사업자번호
SELECT dbo._UfnMaskConv(999-99-99999, 1111111111)

-- 2. 주민등록번호
SELECT dbo._ufnMaskConv(999999-9999999, 9901012111111)

사용자 정의 함수는 SQL 버전에 제약이 없으므로 해당 로직을 사용하는 것이 좋은 방안이 될 수 있습니다.

읽어주셔서 감사합니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기