카드번호을 마스킹으로.. 2 3 118

by 김서준 [2018.01.10 17:59:38]


전화번호을 마스킹 처리를 하고 싶습니다..

1234-1234-****-1234 이런식으로 ansi문으로 처리할수 있는지요?

감사합니다.

 

by 마농 [2018.01.11 08:41:35]

ANSI 표준이라는게 JOIN 은 명확하게 구분이 되는데...
함수는 DBMS 마다 다 달라서.. ANSI 표준함수가 있는지는 모르겠네요?
아래 예시만 봐도 4가지 db 에 공통으로 적용할 수 있는 게 없네요.

-- Oracle --
SELECT card_no
     , SUBSTR(card_no, 1, 10) || '****' || SUBSTR(card_no, 15, 5) v
     , REGEXP_REPLACE(card_no, '(.{10})(.{4})', '\1****') v
  FROM (SELECT '1234-1234-1234-1234' card_no FROM dual) a
;
-- MSSQL --
SELECT card_no
     , CONCAT(SUBSTRING(card_no, 1, 10), '****', SUBSTRING(card_no, 15, 5)) v
     , SUBSTRING(card_no, 1, 10) + '****' + SUBSTRING(card_no, 15, 5) v
     , LEFT(card_no, 10) + '****' + SUBSTRING(card_no, 15, 5) v
     , STUFF(card_no, 11, 4, '****') v
  FROM (SELECT '1234-1234-1234-1234' card_no) a
;
-- MySQL --
SELECT card_no
     , CONCAT(SUBSTRING(card_no, 1, 10), '****', SUBSTRING(card_no, 15, 5)) v
     , CONCAT(LEFT(card_no, 10), '****', SUBSTRING(card_no, 15, 5)) v
  FROM (SELECT '1234-1234-1234-1234' card_no) a
;
-- PostgreSQL --
SELECT card_no
     , CONCAT(SUBSTR(card_no, 1, 10), '****', SUBSTR(card_no, 15, 5)) v
     , SUBSTR(card_no, 1, 10) || '****' || SUBSTR(card_no, 15, 5) v
     , LEFT(card_no, 10) || '****' || SUBSTRING(card_no, 15, 5) v
     , REGEXP_REPLACE(card_no, '(.{10})(.{4})', '\1****') v
  FROM (SELECT '1234-1234-1234-1234'::varchar card_no) a
;

 


by 우리집아찌 [2018.01.11 12:54:33]

즐겨찾기 추가!!


by 김서준 [2018.01.11 09:56:13]

감사합니다.

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