now is better than never

[Oracle] 이메일에서 도메인 추출하기 - INSTR, SUBSTR, REGEXP_SUBSTR / 첫 번째 행 출력하기 - (LIMIT, TOP) 본문

SQL/프로젝트

[Oracle] 이메일에서 도메인 추출하기 - INSTR, SUBSTR, REGEXP_SUBSTR / 첫 번째 행 출력하기 - (LIMIT, TOP)

김초송 2022. 12. 2. 15:24

INSTR(컬럼, '철자')

: 컬럼의 데이터에서 특정 철자(문자, 숫자, 특수문자)의 자리번호를 출력

SUBSTR(컬럼, 시작위치, 길이)

: 컬럼의 데이터에서 시작위치부터 길이까지 문자열 출력

순서는 1부터 시작

select substr(email, instr(email, '@')+1, length(email)-instr(email, '@')) domain
from emp;
  • instr(email, '@')+1 : @ 다음 문자부터

select substr(email, instr(email, '@')+1, instr(email, '.')-instr(email, '@')-1) domain
from emp;
  • instr(email, '.')-(instr(email, '@')+1) : @ 다음부터 . 까지 문자의 개수

 

regexp_substr 설명 : 

https://kimchocosong.tistory.com/49

 

[Oracle] 날짜 데이터 년, 월, 일 추출하기 - REGEXP_SUBSTR

생년월일 데이터로 같은 생일인 사람이 있는지 알고 싶은데 오라클에 년, 월, 일 추출 함수가 없나...? 찾아보니 EXTRACT 라는 함수가 있긴 한데 select birthday, count(*) from (select empno , extract(month from bir

kimchocosong.tistory.com

select regexp_substr(email, '[^@]+', 1, 2) domain
from emp;

닷컴을 지우고 싶으면 한번 더 정규식 적용하면 된다

select regexp_substr(regexp_substr(email, '[^@]+', 1, 2),'[^.]+', 1, 1) domain
from emp;

 


 

-- 서울에서 가장 긴 상호명 출력
select 상호명, length(상호명)
from market_2022
order by 2 desc fetch first 1 rows only;

( ORDER BY 컬럼 (ASC / DESC) ) FETCH FIRST 숫자 ROWS ONLY

: 정렬된 결과에서 숫자만큼 행 출력

 

mySQL은 limit 하면 되고 MSSQL은 top으로 하면되는데 오라클은 뭐 이렇게 긴지...

dual 써야되는 것도 귀찮고..  mySQL은 안 써도 됐는데.... 갈수록 마음에 안든다 ㅋㅋㅋㅋ ㅠ

 

본 내용은 아이티윌 '빅데이터&머신러닝 전문가 양성 과정' 을 수강하며 작성한 내용입니다.