1. REGEXP_SUBSTR
- SUBSTR 함수의 기능을 확장하였습니다. 주어진 문자열을 대상으로 정규 표현식 패턴을 수행하여, 일치하는 하위 문자열을 반환합니다.
- 문법 : REGEXP_SUBSTR(srcstr, pattern, [,position[,occurrence[,match_option]]])
- srcstr : 소스 문자열
- position : Oracle이 문자열에서 특정 문자를 어디에서 찾아야 하는지 위치를 나타냄. 기본으로 1로 설정되어 있으므로, 문자열의 처음부터 검색을 시작.
- occurrence : 검색하고자 하는 문자열에서 특정 문자의 발생 횟수. 기본으로 1로 설정되어 있으며, 이는 Oracle이 문자열에서 첫번째 발생 pattern을 찾는다는 의미.
- match_option : match를 시도할 때의 옵션
SELECT REGEXP_SUBSTR(email, '[^@]+', 1, 1) AS "ID"
, REGEXP_SUBSTR(email, '[^@]+', 1, 2) AS "MailAddr"
FROM (
SELECT 'hellokitty@empal.com' email
FROM dual
)
;
2. REGEXP_LIKE
정규표현을 사용해 컬럼의 데이터를 LIKE 검색합니다. 문자 데이터 필드에 사용할 수 있으나 LONG에는 사용이 불가능합니다. VARCHAR2, CHAR, CLOB, NVARCHAR2, NCHAR, NCLOB )
SELECT * FROM A WHERE REGEXP_LIKE (COL1, '[0-9][a-Z]');
SELECT * FROM B WHERE REGEXP_LIKE ( COL2, '^([[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2})$');
3. REGEXP_INSTR
지정한 정규표현식을 만족하는 최초문자 위치를 리턴한다. 검색 시작위치의 지정이 가능합니다.
SELECT REGEXP_INSTR(COL3, '#') FROM C
컬럼3에서 문자'#'의 인덱스를 조회한다 (없으면 0)
4. REGEXP_REPLACE
지정한 정규표현식에 해당하는 문자열을 다른 문자열로 변경합니다.
SELECT '04010ABCDEF135' COL4, REGEXP_REPLACE( '04010ABCDEF135', '[0-3]', '@') COL5 FROM D
문자 '0', '1', '2', '3' 를 '@'로 변경한다.
5. REGEXP_COUNT
지정한 정규표현식에 해당하는 문자열이 몇개인지 확인할 수 있습니다.
SELECT 'bb-01-d3' COL6, REGEXP_COUNT( 'bb-01'd3', '-') FROM E
REFERENCE
https://freezm.tistory.com/entry/2011091401
https://cheezred.tistory.com/35
'Oracle' 카테고리의 다른 글
[Oracle] Trim (0) | 2019.11.06 |
---|---|
[Oracle] 쿼리 실행 순서 (0) | 2019.10.31 |
[Oracle] PL/SQL %TYPE (0) | 2019.10.28 |
[Oracle] INDEX_DESC HINT (0) | 2019.09.09 |
[Oracle] FULL SCAN HINT (0) | 2019.09.09 |