Skip Headers

오라클 10g 함수
10g Release 1 (10.1)
Go to Documentation Home
HOME
Go to Book List
ORA_home
Go to Table of Contents
연구회
Go to Index
자료실
Go to Master Index
ORA_10G
Go to Feedback page
MAIL

Go to previous page
Previous
Go to next page
Next

REGEXP_REPLACE

문법

MAIN

regexp_replace::=
Description of regexp_replace.gif follows

그림 설명
 

목적

MAIN

지정한 정규 표현을 만족하는 부분을, 지정한 다른 문자열로 치환합니다.복잡한 치환/검색 조작을 가능하게 합니다

REGEXP_REPLACE함수는 정규 표현 패턴에 대하여 문자열을 검색할수 있도록 REPLACE함수의 기능을 확장한 것이다. 기본적으로, 함수는 source_string을 정규 표현 패턴의 모든 발생하는 문자를 replace_string으로 대체하여 반환한다. 반환되는 문자열은 source_char와 같은 n 문자 세트이다. 함수는 만약 첫번째 인수가 LOB가 아니라면 VARCHAR2를 반환하고, 만약 첫번째 인수가 LOB라면, CLOB를 반환한다.

이 함수는 POSIX 정규 표현 규격과 유니코드 정규 표현 가이드 라인을 따른다.

예제

MAIN

다음 예제는 phone_number를 조사하여, 패턴 xxx.xxx.xxxx를 찾는다. 오라클은 패턴 (xxx) xxx-xxxx으로 서식을 변경한다.

SELECT
  REGEXP_REPLACE(phone_number,
                 '([[:digit:]]{3})\.([[:digit:]]{3})\.([[:digit:]]{4})',
                 '(\1) \2-\3') "REGEXP_REPLACE"
  FROM employees;

REGEXP_REPLACE
--------------------------------------------------------------------------------
(515) 123-4567
(515) 123-4568
(515) 123-4569
(590) 423-4567
. . .
음 예제는 country_name을 조사한다. 오라클은 문자열내에서 NULL이 아닌 각 문자 뒤에 공백을 삽인한다.
SELECT
  REGEXP_REPLACE(country_name, '(.)', '\1 ') "REGEXP_REPLACE"
  FROM countries;

REGEXP_REPLACE
--------------------------------------------------------------------------------
A r g e n t i n a
A u s t r a l i a
B e l g i u m
B r a z i l
C a n a d a
. . .
다음 예제는 string를 조사하고, 2이상의 공백을 찾는다. 오라클은 2 이상의 공백을 단일 공백으로 대체한다.
SELECT
  REGEXP_REPLACE('500   Oracle     Parkway,    Redwood  Shores, CA',
                 '( ){2,}', ' ') "REGEXP_REPLACE"
  FROM DUAL;

REGEXP_REPLACE
--------------------------------------
500 Oracle Parkway, Redwood Shores, CA

특정 문자열을 다른 문자열로 대체하는 기존의 REPLACE SQL 함수의 기능을 잠시 되짚어 보겠습니다. 데이터의 텍스트에 필요 이상의 공백 기호가 존재하는 상황에서, 이를 단일 공백 기호로 대체하는 경우를 가정해 봅시다 REPLACE 함수를 사용할 때에는 대체할 공백 기호의 숫자를 정확하게 지정해야 합니다. 하지만, 필요 없는 공백의 수가 일정하리라는 보장은 없습니다. 아래 예는 JoeSmith사이에 3 개의 공백 기호가 존재하는 경우를 검색하고 있습니다. REPLACE 함수의 매개변수는 두 개의 공백 기호를 하나의 공백 기호로 대체할 것을 명시하고 있습니다. 하지만 JoeSmith 사이에 3 개의 공백 기호가 존재하는 경우에는 여전히 필요 없는 공백이 하나 남게 됩니다.

SELECT REPLACE('Joe   Smith','  ', ' ')
       AS replace
FROM dual


REPLACE
---------
Joe Smith

REGEXP_REPLACE 한층 개선된 문자열 대체 기능을 제공합니다. 그 사용법은 표 9에서 설명되고 있습니다. 아래 쿼리는 두 개 또는 그 이상의 공백 기호를 하나의 공백 기호로 대체합니다. ( )서브표현식은 하나의 공백 기호를 포함하며  {2,}의 조건에 의해 지정된 대로 2 회 또는 그 이상 반복되는 조건을 명시합니다.

SELECT REGEXP_REPLACE('Joe   Smith',
       '( ){2,}', ' ')
       AS RX_REPLACE
FROM dual


RX_REPLACE
----------
Joe Smith