반응형

저번에는 자바(Java)에서 subString, indexOf 함수를 사용하여 이메일 아이디만 추출하는 방법을 다뤘다. 이번 글에서는 DB에서 처리해야 하는 경우가 발생하여 이렇게 기록한다. 티베로(Tibero) 이메일 아이디만 추출하는 방법은 SUBSTR 함수를 사용하면 된다.

 

티베로(Tibero) 이메일 아이디만 추출하는 방법

정규식을 공부하면서, 정규식이 너무 효율성이 좋아 정규식을 사용했다.

 

일단, REGEXP_SUBSTR 함수 사용법을 알아야 한다.

 

REGEXP_SUBSTR 함수 문법

REGEXP_SUBSTR(COLUMN, '정규식', '가져오는 시작 위치', 데이터 레벨)

 

처음 파라미터부터 바꿀 데이터의 컬럼, 정규식, 가져오는 시작 위치, 정규식의 특정 문자를 기준으로 가져오는 데이터 위치를 뜻한다.

 

아래의 예시 데이터를 가지고 보면 이해하기 쉽다.

SELECT EMAIL
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 1, 1) AS ID
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 1, 2) AS DOMAIN
     
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 2, 1) AS ID_TEST02
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 3, 1) AS ID_TEST03
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 4, 1) AS ID_TEST04
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 5, 1) AS ID_TEST05
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 6, 1) AS ID_TEST06
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 7, 1) AS ID_TEST07
     
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 2, 2) AS DOMAIN_TEST02
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 3, 2) AS DOMAIN_TEST03
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 4, 2) AS DOMAIN_TEST04
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 5, 2) AS DOMAIN_TEST05
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 6, 2) AS DOMAIN_TEST06
  FROM (
  			SELECT 'TEST@NAVER.COM' AS EMAIL
  			  FROM DUAL
  );

아무리 수정해도 들여쓰기가 적용이 안되네. 이것좀 고쳐줘요 티스토리.

난 저렇게 들여쓰기를 많이 하지도 않았단 말이에요. 나한테 왜그래오.

 

아래와 같이, SQL 쿼리 문을 짜면 ID와 Domain이 분리가 된다.

  SELECT EMAIL
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 1, 1) AS ID
     , REGEXP_SUBSTR(EMAIL, '[^@]+', 1, 2) AS DOMAIN
	FROM (
  			SELECT 'TEST@NAVER.COM' AS EMAIL
  			  FROM DUAL
  	);

 

거기에 맨 위의 코드를 사용하게 되면, 아래와 같이 어떤 시작 위치에서 가져올 것인지에 대한 테스트 결과다.

 

 

2번째 레벨에서 시작 위치를 가져오려면 1부터 시작이 아닌 @ 다음 인덱스 위치에서 가져와야 한다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기