[사막에서 바늘찾기]
안녕하세요
오늘은 빅데이터를 오라클로 사용하려면 알아둬야하는 함수 정규식 함수에 대해 알아보겠습니다.
정규식이란
문자열 데이터의 간단한 패턴 및 복잡한 패턴을 검색하고 조작할 수 있습니다.
메타문자와 리터럴을 사용하여 정규식을 지정합니다.
메타문자: 검색 알고리즘을 지정하는 연산자 리터럴: 검색 중인 문자 |
여기서 사용할 메타문자는 여기서 찾아보실 수 있습니다.
SQL 및 PL/SQL에서 정규식 함수의 종류
함수 이름 |
설명 |
REGEXP_LIKE |
일반 like보다 더 복잡한 패턴의 데이터를 검색할 수 있는 함수 |
REGEXP_REPLACE |
일반 replace보다 더 복잡한 패턴의 데이터를 다른 데이터로 대체하는 함수 |
REGEXP_INSTR |
일반 instr보다 더 복잡한 패턴의 철자 또는 단어의 자릿수를 찾는 함수 |
REGEXP_SUBSTR |
지정된 문자열 내에서 정규식 패턴을 검색하고 일치하는 부분 문자열을 출력하는 함수 |
REGEXP_COUNT |
문장 내에서 특정 단어가 몇 번 나오는지 출력하는 함수 |
예제를 통해 각각의 함수에 대해 알아보도록 하겠습니다.
[사원]
EMPNO | ENAME | JOB | SAL | DEPT |
1 | ALLEN | SALESMAN | 1250 | 서울시 강남구 |
2 | BAKE | SALESMAN | 1600 | 서울시 강남구 |
3 | CLARK | MANAGER | 3000 | 세종시 |
4 | WARD | CLERK | 1100 | 인천광역시 |
5 | JAMES | ANALYST | 3000 | 부산광역시 |
6 | FORD | ANALYST | 3000 | 세종시 |
7 | SMITH | CLERK | 1300 | 세종시 |
8 | MILLER | MANAGER | 2450 | 서울시 강남구 |
예제1. 이름에 W 또든 K가 들어가는 사원들의 이름을 뽑아주세요.
메타문자 참고
| : 또는을 의미한다.
( ... ) 괄호로 묶인 표현식을 한 단위로 취급
[결과]
EMPNO | ENAME | JOB | SAL | DEPT |
2 | BAKE | SALESMAN | 1600 | 서울시 강남구 |
3 | CLARK | MANAGER | 3000 | 경기도 과천시 |
4 | WARD | CLERK | 1100 | 인천광역시 |
예제2. 부서컬럼에서 (구를 제외한) 도시명만 뽑아주세요
메타문자 참고
^ : not을 의미한다.
+ : 1이상의 문자열
: 공백
쿼리 설명:
dept에서 첫번째 단어( 공백을 만나기 전까지 한 단어)만 출력하는 쿼리문입니다.
[결과]
EMPNO | ENAME | JOB | SAL | DEPT |
1 | ALLEN | SALESMAN | 1250 | 서울시 |
2 | BAKE | SALESMAN | 1600 | 서울시 |
3 | CLARK | MANAGER | 3000 | 경기도 |
4 | WARD | CLERK | 1100 | 인천광역시 |
5 | JAMES | ANALYST | 3000 | 부산광역시 |
6 | FORD | ANALYST | 3000 | 세종시 |
7 | SMITH | CLERK | 1300 | 세종시 |
8 | MILLER | MANAGER | 2450 | 서울시 |
예제3. '오라클사에서 만든 오라클 데이터베이스에서도
정규식 오라클 SQL함수를 제공한다'
라는 문장에서 SQL이 몇번 언급되었는지 세어주세요.
결과는 3이 출력되겠죠?
많은 문장이 들어있는 테이블에서 위의 방법으로
가장 많은, 적은 단어를 찾는 등 다양한 응용이 가능합니다.
빅데이터 중 유용한 데이터를 찾는데 도움을 주는 정규식함수를 잘 활용해봅시다~
regexp_replace함수는 전 포스팅에서 다뤘습니다.
오늘은 여기까지!
내일부터는 SQL튜닝방법으로 돌아오겠습니다!
이 글이 도움되셨다면 아래 공감 꾹~
'SQL' 카테고리의 다른 글
ORACLE SQL 튜닝 | 조인 튜닝1_조인순서 ( ordered, leading ) (2) | 2018.04.20 |
---|---|
ORACLE SQL 튜닝 | 인덱스 튜닝 ( index skip scan, index full scan, index fast full scan) (2) | 2018.04.19 |
ORACLE | 다중 INSERT문 4가지 방법 (0) | 2018.04.17 |
ORACLE | 치환변수(&) 사용하는 방법 (0) | 2018.04.16 |
ORACLE | 인덱스 (INDEX) (2) | 2018.04.12 |