본문 바로가기
Programming/오라클[SQL]

오라클[sql] 정규식

by 콩king 2022. 9. 25.

정규식

 정규식 : 데이터의 패턴을 보다 다양하게 찾거나 변경할 수 있도록 하는 함수

-- REGEXP_LIKE      : like, 원하는 패턴을 검색

-- REGEXP_REPLACE   : 패턴을 검색하고 변경(값 바꾸기)

-- REGEXP_INSTR     : 패턴을 검색하고 위치 반환

-- REGEXP_SUBSTR    : 패턴을 검색하고 부분 문자 추출

-- REGEXP_COUNT     : 패턴을 검색하고 발견한 횟수


 메타문자 : 검색을 하기위해 사용하는 문자

-- . 임의문자를 표현

 

예제 

 테이블 생성

CREATE TABLE reg_tab( text varchar2(20) );

 

데이터 입력

INSERT INTO reg_tab VALUES('TIGER');

INSERT INTO reg_tab VALUES('TIGGER');

INSERT INTO reg_tab VALUES('elephant');

INSERT INTO reg_tab VALUES('tiger');

INSERT INTO reg_tab VALUES('tiger2');

INSERT INTO reg_tab VALUES('tiger3');

INSERT INTO reg_tab VALUES('doggy');

INSERT INTO reg_tab VALUES('5doggy');

INSERT INTO reg_tab VALUES('DOG');

INSERT INTO reg_tab VALUES('DOG2');

INSERT INTO reg_tab VALUES('개');

INSERT INTO reg_tab VALUES('cat');

INSERT INTO reg_tab VALUES('catty');

INSERT INTO reg_tab VALUES('9catty');

INSERT INTO reg_tab VALUES('catwoman');

INSERT INTO reg_tab VALUES('고양이');

INSERT INTO reg_tab VALUES('BAT');

INSERT INTO reg_tab VALUES('BATMAN');

INSERT INTO reg_tab VALUES('BATGIRL'); 

INSERT INTO reg_tab VALUES('0BATGIRL'); 

INSERT INTO reg_tab VALUES('박쥐');


COMMIT;

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

▶ text 컬럼의 문자열에서 't'로 끝나는 데이터 검색

SELECT *

  FROM reg_tab

WHERE REGEXP_LIKE(TEXT, 't$');

 

▶ 첫번째 't'로 시작하여 5번째 'r'이 있는 데이터 검색

SELECT *

  FROM reg_tab

WHERE REGEXP_LIKE(TEXT, '^t...r');

 

▶ 숫자로 끝나는 데이터 검색

SELECT *

  FROM reg_tab

WHERE REGEXP_LIKE(TEXT, '[0-9]$');

 

▶ 숫자로 시작하는 데이터 검색

SELECT *

  FROM reg_tab

WHERE REGEXP_LIKE(TEXT, '^[0-9]');

 

▶ 숫자가 아닌 문자로 시작하는 데이터 검색

SELECT *

  FROM reg_tab

WHERE REGEXP_LIKE(TEXT, '^[^0-9]');

 

SELECT *

FROM REG_TAB

WHERE NOT REGEXP_LIKE(TEXT, '^[0-9]');

 

▶ 대문자로 시작하는 데이터 검색

SELECT *

  FROM reg_tab

WHERE REGEXP_LIKE(TEXT, '^[[:upper:]]');

 

SELECT *

FROM REG_TAB

WHERE REGEXP_LIKE(TEXT, '^[A-Z]');

 

▶ 소문자 외의 문자로 시작하는 데이터 검색

SELECT *

  FROM reg_tab

WHERE REGEXP_LIKE(TEXT, '^[^[:lower:]]');

 

SELECT *

FROM REG_TAB

WHERE NOT REGEXP_LIKE(TEXT, '^[a-z]');

-- WHERE REGEXP_LIKE(TEXT, '^[0-9A-Z가-힣]');

 

▶ 한글로 시작하는 데이터 검색

SELECT *

  FROM reg_tab

WHERE REGEXP_LIKE(TEXT, '^[가-힣]');

 

▶ 데이터 중 'gg'나 'GG'가 들어있는 데이터 검색

SELECT *

  FROM reg_tab

WHERE REGEXP_LIKE(TEXT, 'gg|GG');

'Programming > 오라클[SQL]' 카테고리의 다른 글

오라클[sql] 커서 CURSOR  (0) 2022.09.24
오라클[sql] 반복문  (0) 2022.09.24
오라클[sql] 조건문 IF / CASE  (0) 2022.09.24
오라클[sql] PL/SQL  (0) 2022.09.24
오라클[sql] 시퀀스 / 인덱스  (0) 2022.09.24

댓글