TOP
class="layout-aside-left paging-number">
본문 바로가기
자격증/SQLD

[SQLD] 정규표현식 (보강)

by 기록자_Recordian 2024. 3. 8.
728x90
반응형

아시다시피 정규표현식이 2024년에 새로 추가된 범위라 자료찾기가 많이 어려웠다.
[기존 자료]

 

SQLD 2과목 SQL 활용 - 정규 표현식

서브쿼리 집합연산자 그룹 함수 윈도우 함수 TOP N 쿼리 계층형 질의와 셀프 조인 PIVOT 절과 UNPIVOT 절 정규 표현식 ※ 자료출처: 데이터 산업 진흥원(K-DATA) 시작에 앞서.. 해당 범위는 2024년에 새롭

puppy-foot-it.tistory.com


정규표현식 보강 내용
출처: 홍쌤의 데이터 랩 유튜브

 
[정규표현식 종류]

\d Digit, 0, 1, 2, ...9 [ab] a 또는 b의 한 글자 \숫자 그룹번호
\D 숫자가 아닌 것 [^ab] a와 b 제외한 모든 문자 [:alnum:] 문자와 숫자
\s 공백 [0-9] 숫자 [:alpha:] 문자
\S 공백이 아닌 것 [A-Z] 영어 대문자 [:blank;] 공백
 \w 단어 [a-z] 영어 소문자 [:cntrl:] 제어문자
\W 단어가 아닌 것 [A-z] 모든 영문자 [:digit:] Digits
\t Tab i+ i가 1회 이상 반복 [:graph:] Graphical charaters
[:alnum:], [:punct:]
\n New Line (엔터문자) i* i가 0회 이상 반복 [:lower:] 소문자
^ 시작되는 글자 i? i가 0회에서 1회 반복 [:print:] 숫자, 문자, 특수문자, 공백모두
$ 마지막 글자 i{n} i가 n회 반복 [:punct:] 특수문자
\ Escape Character
(뒤에 기호 의미 제거)
i{n1,n2} i가 n1에서 n2회 반복 [:space:] 공백문자
| 또는 i(n,) i가 n회 이상 반복 [:upper:] 대문자
. 엔터를 제외한 모든 한 글자 () 그룹지정 [:xdigit:] 16진수

 
◆ REGEXP_REPLACE

  • 정규식 표현을 사용한 문자열 치환 가능
[문법]
(대상, 찾을 문자열, [바꿀 문자열], [검색 위치], [발견 횟수], [옵션])

 
1. 특징

  • 바꿀 문자열 생략 시 문자열 삭제
  • 검색 위치 생략 시 1
  • 발견횟수 생략 시 0 (모든)

2. 옵션

  • c: 대소를 구분하여 검색
  • i : 대소를 구분하지 않고 검색
  • m : 패턴을 다중라인으로 선언 가능

예제1. 숫자 삭제하기

▶ 빈문자열을 전달하여 숫자를 모두 삭제 처리


 예제2. 특수문자 삭제하기

▶ \w는 문자와 숫자, _를 포함
▶ \W는 문자와 숫자, _ 가 아닌 특수기호와 공백을 의미
 
예제3. 문자와 문자 바로 뒤에 오는 숫자를 삭제 (대소문자 구분 없이)


◆ REGEXP_SUBSTR

  • 정규식 표현을 사용한 문자열 추출
  • 옵션은 REGEXP_REPLACE 와 동일
[문법]
REGEXP_SUBSTR(대상, 패턴, [검색위치], [발견횟수], [옵션], [추출그룹])

 
특징

  • 검색 위치 생략 시 1
  • 발견횟수 생략 시 1
  • 추출그룹은 서브패턴을 추출 시 그 중 추출할 서브패턴 번호

전화번호 구성: 숫자여러개 + . + 숫자여러개 + . + 숫자여러개
차례대로 \d+,.,\d+,.,\d+ 로 표현 가능, 그 중 첫번째 그룹 추출


◆ REGEXP_INSTR

  • 주어진 문자열에서 특정패턴의 시작 위치를 반환
  • 옵션 전달 불가
[문법]
REGEXP_INSTR(원본, 찾을문자열, [시작위치], [발견횟수])

 
특징

  • 시작 위치 생략 시 처음부터 확인(기본값: 1)
  • 발견횟수 생략 시 처음 발견된 문자열 위치 리턴

 

▶ REGEXP_INSTR(JOB_ID,'[H]',1)
JOB_ID 중 'H' 가 처음발견된 위치 숫자로 반환
 

▶  다음 문자열에서 공백이 아닌 문자열 ([^ ]) 의 반복들 (+) 중 처음부터 스캔 (1) 하여 두번째 발견(2)된 것의 위치


◆ REGEXP_LIKE

  • 주어진 문자열에서 특정패턴을 갖는 경우 반환(WHERE 절 사용만 가능)
  • 옵션 REGEXP_REPLACE와 동일
[문법]
REGEXP_LIKE(원본, 찾을문자열, [옵션])

 

  JOB_TITLE 컬럼의 데이터 중 글자가 r로 (r$) 끝나는 데이터 출력 


◆ REGEXP_COUNT

  • 주어진 문자열에서 특정패턴의 횟수를 반환
  • 옵션은 REGEXP_REPLACE와 동일
[문법]
REGEXP_COUNT (원본, 찾을문자열, 시작위치, [옵션])

 

 
  JOB_TITLE 컬럼의 데이터 중 R 로 끝나는 (R$) 데이터의 수
JOB_TITLE 컬럼의 데이터 중 S로 시작하는 (^S) 데이터의 수

728x90
반응형