[oracle] 정규식REGEXP_INSTR 함수
REGEXP_INSTR 함수
특정 패턴이 출현하는 첫 위치 값을 반환하는 함수입니다.
전체 데이터 목록
SELECT* FROM TEST
'?'의 위치를 찾아낸다.
select text, regexp_instr(text, '\?') AS "? 위치" FROM TEST
아래의 화면을 보시면 6행의 값이 1인것을 확인할수 있습니다.
첫 시작이 공백이 아닌('[^ ]') 부분중에서
1번 글자('aa')부터 검사해서 3번째 위치가 출현되는 자리를 찾아라
select regexp_instr('aa bb cc dd ee', '[^ ]+', 1, 3) FROM dual
[^ ] 이 표시가 무슨 의미인지 몰라서 찾아봤습니다. '공백이 아닌!' 이라는 뜻입니다.
의미를 해석해보면 aa bb cc ee 에서 공백이아닌 글자는 aa,bb,cc,ee를 뜻하는데 여기서 3번째인 첫번째c의 위치를 의미 합니다.
regexp_instr(text, '표현식', 검색시작위치, 찾는패턴순번, offset) AS "offset 0",
SELECT text,
regexp_instr(text,
'[A-Z]{3}', 1, 1, 0) AS "offset 0",
regexp_instr(text,
'[A-Z]{3}', 1, 1, 1) AS "offset 1",
regexp_instr(text, '[A-Z]{3}', 1, 1, 0, 'i') AS "offset
i" i=대소분자구분안함
이라는 뜻이다.
FROM TEST
offset의 사전적 의미는 '상쇄'라는 의미인데 0은 '시작'을 의미하고 1은 '끝나는 부분'을 의미합니다.
첫행을 보시면 offset 0 =1, offset 1 =4로 출력되어 있는데요. 즉, 첫번째 자리에서 시작하고
C의 자리수인 3에서 상쇄되고 1이 시작하는 자리 4를 출력합니다.
첫 글자가 공백이 아니고 abc로 시작되는 두 번째 글자의 첫 위치를 표시
select regexp_instr('ABC ADE ABC ADF', '[^ ]+[ABC]', 1, 2) FROM dual
'개발 > DB' 카테고리의 다른 글
[oracle] 정규식 REGEXP_REPLACE 함수 (6) | 2016.05.04 |
---|---|
[oracle]오라클 ibatis iterate conjunction (0) | 2016.05.01 |
[oracle]오라클 최대값의 다른 컬럼 구하기 (0) | 2016.04.25 |
[sql]쿼리 dml, ddl, dcl 등 (0) | 2016.04.08 |
[oracle] 표현식 (0) | 2016.04.07 |
[mysql] 특정 ip 접근권한 설정 (0) | 2016.04.02 |
[oracle]오라클 각종 내장 함수(round(), trunc(), trim() 등) (0) | 2016.03.31 |