게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[SQL]동적 데이터 마스킹이 궁금합니다
게시물ID : programmer_21561짧은주소 복사하기
작성자 : 페이커하악
추천 : 0
조회수 : 644회
댓글수 : 1개
등록시간 : 2017/10/23 23:53:59
옵션
  • 본인삭제금지
A테이블에
B라는 열에 데이터가 TEXT 자료형으로 들어가 있습니다.

row1 : 그래서 안녕하세요 01-111-2222 전화번호입니다
row2 : 02-222-1111
row3 : 어쩌구저쩌구하다가 전화번호가 띠용 02-222-2222
row4 : 나는전화번호가없지롱

이런 식으로 데이터 길이가 동적으로 들어가 있을 때, 가운데 3자리만 #으로 마스킹 하려고 할 때, 어떻게 하는 것이 좋을까요?
(row의 수가 굉장히 많다고 가정할 때... 효율적인 방법이 있을까요?)

UPDATE TABLE_NAME
SET B = (전화번호 정규식에 해당하는 첫 인덱스를 찾고, 그로부터 4~6자리 숫자를 ###로 대체 )
WHERE B LIKE '%[0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]%' (전화번호 모양 정규식)

진한 글씨로 표현된 부분을 어떻게 표현해야 할 지 모르겠습니다..
첫 인덱스를 찾는건 CHARINDEX 를 사용하고, 변환(대체)하는건 SUBSTRING 키워드를 통해서 적용하면 될 것 같은데.. 
최적화된 쿼리를 짜려고 하니 머리가 너무 아프네요 ㅜㅜ 고수님들이라면 어떻게 하실까요?

일단 맨 아랫줄에 LIKE를 쓰면서 쿼리 성능이 안좋아질 것 같은데,
첫 인덱스를 찾아서 해당 문자열을 반환하고 그걸 또 데이터 변경이 들어가니까 저같이 허접이 하면 완전 별로인 쿼리가 나올 것 같습니다..

인터넷 검색을 해봐도 규격이 정해져있는 (데이터 길이/위치) 내용이 대부분이라서 정보 찾기도 어렵습니다.. 

JAVA로 짜라고하면 좀 쉽게 할 수 있을텐데.. SQL은 배우고있는 단계라서 ㅠㅠ 조언주시면 감사하겠습니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호