본문 바로가기

SQL

27. 정규식표현(2)

지난 시간에 다룬 내용에 가벼운 정리와 함께 나머지 표현도 함께 보자.

 

[ 정규식 표현(Regular Expression) ]
1. regexp_substr 

** 문법
regexp_substr(대상, 패턴, 시작위치, 발견횟수, 옵션, 서브그룹번호)

** 발견횟수(default:1)
   패턴에 만족하는 여러 문자열 중 가장 처음 발견되는 문자열을 추출함
  

2. regexp_replace

** 문법
regexp_replace(대상, 찾을문자열, 바꿀문자열, 시작위치, 발견횟수, 옵션)

** 발견횟수(default:0)
   패턴에 만족하는 모든 문자열 치환

 

-----------------------------------------------------------------------------------------------------------   


3. regexp_instr : 문자열의 위치를 리턴

** 문법
regexp_instr(대상, 패턴, 시작위치, 발견횟수)

** 특징
- 시작위치 생략 시 1
- 발견횟수 생략 시 1

select id,
       regexp_instr(id, '\d'),
       regexp_instr(id, '\W'),
       regexp_instr(id, '[[:punct:]]')
  from professor;

 



4. regexp_count

** 문법
regexp_count(대상, 패턴, 시작위치, 옵션)

** 특징
- 시작위치 생략 시 1
- 옵션 생략 가능

select id,
       regexp_count(id, '\d'),          -- 숫자 하나를 셈
       regexp_count(id, '\d+'),         -- 숫자의 연속(덩어리)을 셈
       regexp_count(id, '\W'),          -- _를 제외한 특수기호나 공백을 셈
       regexp_count(id, '[[:punct:]]')  -- 특수기호(_를 포함)를 셈
  from professor;

 

 

select 'abc___  123',
       regexp_count('abc___  123', '\W')   -- _는 세지 않고 공백을 셈
  from dual;

 

 


5. regexp_like



** 문법
regexp_like(대상, 패턴, 옵션)

** 특징
- 함수 결과는 참,거짓 리턴 => where절에서만 사용 가능
- 옵션 생략 가능

예제) 숫자가 포함된 행만 선택
select id
  from professor
 where regexp_like(id, '\d');


select id
  from professor
 where regexp_like(id, '[[:punct:]]{2,}');



select count(id)                        --4
  from professor 
 where regexp_like(id, '[a-z][0-9]+');

 


select count(id)                         --0
  from professor
 where regexp_like(id, '^[a-z][0-9]+');  -- 두번째 글자가 숫자인

 

  
select count(id)                          --3
  from professor
 where regexp_like(id, '^[a-z]+[0-9]+');  -- 두번째 글자가 숫자인

 

 

'SQL' 카테고리의 다른 글

29. 윈도우함수(2)  (0) 2024.11.06
28. 윈도우함수(1)  (0) 2024.11.05
26. 정규식표현(1)  (1) 2024.11.04
25. 기타 오브젝트(3)  (0) 2024.11.01
24. 기타 오브젝트(2)  (1) 2024.10.31