A테이블에 <div>B라는 열에 데이터가 TEXT 자료형으로 들어가 있습니다.</div> <div><br></div> <div>row1 : 그래서 안녕하세요 01-111-2222 전화번호입니다</div> <div>row2 : 02-222-1111</div> <div>row3 : 어쩌구저쩌구하다가 전화번호가 띠용 02-222-2222</div> <div>row4 : 나는전화번호가없지롱</div> <div><br></div> <div>이런 식으로 데이터 길이가 동적으로 들어가 있을 때, 가운데 3자리만 #으로 마스킹 하려고 할 때, 어떻게 하는 것이 좋을까요?</div> <div>(row의 수가 굉장히 많다고 가정할 때... 효율적인 방법이 있을까요?)</div> <div><br></div> <div>UPDATE TABLE_NAME</div> <div>SET B = <b>(전화번호 정규식에 해당하는 첫 인덱스를 찾고, 그로부터 4~6자리 숫자를 ###로 대체 )</b></div> <div>WHERE B LIKE '%[0-9]<span style="font-size:9pt;">[0-9]-</span><span style="font-size:9pt;">[0-9]</span><span style="font-size:9pt;">[0-9]</span><span style="font-size:9pt;">[0-9]-</span><span style="font-size:9pt;">[0-9]</span><span style="font-size:9pt;">[0-9]</span><span style="font-size:9pt;">[0-9]</span><span style="font-size:9pt;">[0-9]</span><span style="font-size:9pt;">%' (전화번호 모양 정규식)</span></div> <div><span style="font-size:9pt;"><br></span></div> <div>진한 글씨로 표현된 부분을 어떻게 표현해야 할 지 모르겠습니다..</div> <div>첫 인덱스를 찾는건 CHARINDEX 를 사용하고, 변환(대체)하는건 SUBSTRING 키워드를 통해서 적용하면 될 것 같은데.. </div> <div>최적화된 쿼리를 짜려고 하니 머리가 너무 아프네요 ㅜㅜ 고수님들이라면 어떻게 하실까요?</div> <div><br></div> <div>일단 맨 아랫줄에 LIKE를 쓰면서 쿼리 성능이 안좋아질 것 같은데,</div> <div>첫 인덱스를 찾아서 해당 문자열을 반환하고 그걸 또 데이터 변경이 들어가니까 저같이 허접이 하면 완전 별로인 쿼리가 나올 것 같습니다..</div> <div><br></div> <div>인터넷 검색을 해봐도 규격이 정해져있는 (데이터 길이/위치) 내용이 대부분이라서 정보 찾기도 어렵습니다.. </div> <div><br></div> <div>JAVA로 짜라고하면 좀 쉽게 할 수 있을텐데.. SQL은 배우고있는 단계라서 ㅠㅠ 조언주시면 감사하겠습니다.</div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.