mysql 마스킹 처리 궁금한게 있어 질문드립니다. 0 7 2,882

by cast [2020.07.21 14:50:35]


제가 현재 mysql 에서 마스킹 처리를 하고 있는데요

정해진 길이가 있으면 마스킹을 하겠는데..

정해진 길이가 없고..  데이터가 이런 형식이면 어떻게 처리해야하나요?

ex)   서울시 강남구 강남동 **로 **번지 

 

해당 주소에서 숫자만 마스킹 처리 해야하는데.. 검색해도 답을찾을수가 없네요..

regexp '[0-9]' 이런식으로도 해보고 이것저것 해볼려고 시도는 해봤는데 해결방안이 안떠올라 글 작성합니다.  

 

 

by 우리집아찌 [2020.07.21 15:34:13]

마리아디비는 가능한거 같은데 mySql 은 모르겠네요.

https://mariadb.com/kb/en/regexp_replace/


by cast [2020.07.21 16:53:30]

링크 주신대로 가능은 하지만 

저희 내부상 버전이 낮아 안되는 현상이 있어

함수 만드는법으로 해결했습니다.

댓글 감사합니다!!


by pajama [2020.07.21 15:34:54]

일단 보여주신 패턴만으로는..이렇게 해봤습니다. 저도 mariadb에서 해봤는데 mysql도 동일한지는 ..

SELECT REGEXP_REPLACE('서울시 강남1구 강남1동 123로 456번지 ','([0-9]+(로|번지))','*\\2')


by cast [2020.07.21 16:52:49]

버전만 지원하면 동작 가능한 함수인것같아요!

현재 저는 버전이 낮아서 지원을 못해서 사용을 못하고있어서

다른 방법으로 해결방법 찾았습니다. 

댓글 감사합니다.


by 마농 [2020.07.21 15:47:19]
SELECT addr
     , REGEXP_REPLACE(addr, '[0-9]', '*') addr_mask
  FROM (SELECT '서울시 강남구 강남동 234로 78번지' addr) a
;

 


by cast [2020.07.21 16:52:13]

감사합니다. 인터넷에서도 해당 정규식 봤는데.. MYSQL 버전이 낮아서 안되였더라구요.. 

지금은 인터넷에 있던 함수만들어서 적용했습니다.

댓글 남겨주셔서 감사합니다.


by 마농 [2020.07.21 17:55:20]
SELECT addr
     , REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
       REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
       addr
       , '0', '*')
       , '1', '*')
       , '2', '*')
       , '3', '*')
       , '4', '*')
       , '5', '*')
       , '6', '*')
       , '7', '*')
       , '8', '*')
       , '9', '*')
       AS addr_mask
  FROM (SELECT '서울시 강남구 강남동 234로 78번지' addr) a
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입