본문 바로가기

Database/ORACLE

SQL class #3 REGEXP_LIKE, REGEXP_REPLACE

SQL class #3 REGEXP_LIKE, REGEXP_REPLACE


1. REGEXP_LIKE

SCOTT>select *
  2  from reg_test
  3  where regexp_like(text,'[a-z][0-9]')
  4  ;
TEXT
----------
a1b2c3
aabbcc123

REGEXP_LIKE(text,'[a-z][0-9]') 이란, text 값의 내용중에 a-z로 시작하고, 0-9 까지 숫자가

오는 값만 추려서 출력을 해주는 함수 입니다.


2. REGEXP_LIKE (2)

SCOTT>SELECT *
  2  FROM reg_test
  3  WHERE REGEXP_LIKE(text,'[a-z]{3}')
  4  ;
TEXT
----------
abc 123
aabbcc123
123abc

REGEXP_LIKE(text,'[a-z]{3}') 이란, text 칼럼 값중에 내용에 [a-z] 즉, 영어가 3글자

이상 연속으로 있는 값만 출력해 주는 함수 입니다.


3. REGEXP_LIKE (3)

SCOTT>SELECT *
  2  FROM reg_test
  3  WHERE REGEXP_LIKE(text,'^[a-z]')
  4  ;
TEXT
----------
abc 123
a1b2c3
aabbcc123

REGEXP_LIKE(text,'^[a-z]') 이란, text 칼럼 값중에 소문자로 시작하는 행만

출력하는 함수 입니다.


4. REGEXP_LIKE (4)

SCOTT>SELECT *
  2  FROM reg_test
  3  WHERE REGEXP_LIKE(text,'[a-z]${3}')
  4  ;
TEXT
----------
123abc

REGEXP_LIKE(text,'[a-z]${3}') 이란, text 칼럼 값중에 소문자 3자리 연속으로 끝이나는

행만 출력을 해주는 함수 입니다.


5. REGEXP_LIKE (5)

SCOTT>SELECT *
  2  FROM reg_test
  3  WHERE REGEXP_LIKE(text,'^[^0-9]')
  4  ;
TEXT
----------
ABC123
ABC 123
abc 123
a1b2c3
aabbcc123
?/!@#$*&
\~*().,
7 rows selected.

REGEXP_LIKE(text,'^[^0-9]') 이란, text 칼럼 값중에 숫자로 시작하지 않는 행의 값만

출력을 해주는 함수 입니다.


6. REGEXP_REPLACE

SCOTT>SELECT name,tel
  2  FROM student
  3  WHERE REGEXP_REPLACE(tel,'(\d{2})\)(\d{4})\-(\d{4})','\2') > '5000'
  4  ;
NAME       TEL
---------- ---------------
김재수     02)6255-9875
일지매     02)6788-4861
김문호     02)6175-3945
허우       02)6122-2345

REGEXP_PLACE(tel,'(\d{2})\)(\d{4}\-(\d{4})','\2') > '5000' 이란, tel 칼럼 값중에

숫자가 2자리, 그리고 ')' 다시 숫자가 4자리 '-' 다시 숫자가 4자리가 오는행을 출력을 하는데

두번째인 숫자가 4자리가오는 부분의 숫자가 '5000'보다 많은 행을 출력하는 함수 입니다.


7. REGEXP_REPLACE (2)

SCOTT>SELECT name,
  2             RTRIM(REGEXP_REPLACE(name,'(.)','\1-'),'-') "AFTER"
  3  FROM student
  4  WHERE deptno1=101;
NAME
----------
AFTER
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
서진수
서-진-수
김신영
김-신-영
일지매
일-지-매
이윤나
이-윤-나

RTRIM(REGEXP_PLACE(name,'(.)','\1-'),'-') "AFTER" 이란, name 칼럼 값중에

제일 마지막 글자만 빼고 글자 사이에 '-' 기호를 패턴으로 넣는 함수 입니다.

RTRIM과 함께 사용된것을 알수 있습니다.


이상으로 오늘은 REGEXP_LIKE, REGEXP_REPLACE 에대해서 알아봤습니다.

다음시간에는 숫자함수에 대해 알아보도록 하겠습니다.

감사합니다!! 수고하셨습니다!!


By. sTricky

'Database > ORACLE' 카테고리의 다른 글

비정상 종료로 인한 VMware 오류 해결책 입니다.  (5) 2013.06.03
Oracle Admin 개념이해하기  (0) 2013.05.22
Oracle 10g RAC asm setting #4  (0) 2013.04.28
SQL class #2 SUBSTR  (0) 2013.04.26
Oracle 10g RAC asm setting #3  (0) 2013.04.25