by cast [2020.07.21 14:50:35]
제가 현재 mysql 에서 마스킹 처리를 하고 있는데요
정해진 길이가 있으면 마스킹을 하겠는데..
정해진 길이가 없고.. 데이터가 이런 형식이면 어떻게 처리해야하나요?
ex) 서울시 강남구 강남동 **로 **번지
해당 주소에서 숫자만 마스킹 처리 해야하는데.. 검색해도 답을찾을수가 없네요..
regexp '[0-9]' 이런식으로도 해보고 이것저것 해볼려고 시도는 해봤는데 해결방안이 안떠올라 글 작성합니다.
마리아디비는 가능한거 같은데 mySql 은 모르겠네요.
https://mariadb.com/kb/en/regexp_replace/
링크 주신대로 가능은 하지만
저희 내부상 버전이 낮아 안되는 현상이 있어
함수 만드는법으로 해결했습니다.
댓글 감사합니다!!
일단 보여주신 패턴만으로는..이렇게 해봤습니다. 저도 mariadb에서 해봤는데 mysql도 동일한지는 ..
SELECT REGEXP_REPLACE('서울시 강남1구 강남1동 123로 456번지 ','([0-9]+(로|번지))','*\\2')
버전만 지원하면 동작 가능한 함수인것같아요!
현재 저는 버전이 낮아서 지원을 못해서 사용을 못하고있어서
다른 방법으로 해결방법 찾았습니다.
댓글 감사합니다.
SELECT addr , REGEXP_REPLACE(addr, '[0-9]', '*') addr_mask FROM (SELECT '서울시 강남구 강남동 234로 78번지' addr) a ;
감사합니다. 인터넷에서도 해당 정규식 봤는데.. MYSQL 버전이 낮아서 안되였더라구요..
지금은 인터넷에 있던 함수만들어서 적용했습니다.
댓글 남겨주셔서 감사합니다.
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 ;