[Oracle] 문자열 자르기 :: REGEXP_SUBSTR, SUBSTR, INSTR

동민·2021년 7월 8일
0

1. REGEXP_SUBSTR()

패턴으로 문자열을 자르는 함수

REGEXP_SUBSTR (컬럼, 패턴, 1, 1) // 패턴은 정규식으로 표현
SELECT REGEXP_SUBSTR ('경기 부천시 경인로 30번길 31', '[^31]+', 1, 1) // 3, 1 패턴으로 잘라낸다
FROM DUAL

=> '경기 부천시 경인로 '
=> '30번길''3'이 패턴 '3'에 걸리기 때문에 '31'에서 잘리는 '경기 부천시 경인로 30번길 ' 가 아닌 '30번길''3'에서 잘리는 '경기 부천시 경인로 '가 리턴 된다.

속성A속성B 패턴으로 자를 수 있음!

REGEXP_SUBSTR(속성A, '[^'||속성B||']+', 1, 1)
SELECT REGEXP_SUBSTR(road_addr, '[^'||bld_mng_no||']+', 1, 1)
FROM DUAL

2. SUBSTR()

String.substring() 의 기능을 제공하는 함수

SUBSTR(컬럼, start, end)
SELECT SUBSTR('hello world', 0, 2)
FROM DUAL

=> 'he'

3. INSTR()

문자열 내, 문자 또는 문자열의 시작 인덱스Index + 1 를 구하는 함수

INSTR(문자열1, 문자 OR 문자열)
SELECT INSTR('hello world', 'h') FROM DUAL
=> 1

SELECT INSTR('hello world', 'hello') FROM DUAL
=> 1

SELECT INSTR('hello world', 'world') FROM DUAL
=> 7

SELECT INSTR('hello world', 'rld') FROM DUAL 
=> 9

응용하기

컬럼A:서울특별시 구로구 디지털로31길 109 에서 컬럼B:109 를 잘라내어 결과:서울특별시 구로구 디지털로31길 를 리턴하려면?

-- road_addr: 서울특별시 구로구 디지털로31길 109
-- bld_no: 109
-- 일 때,

SELECT RTRIM(SUBSTR(road_addr, 0, INSTR(road_addr, bld_no) - 1))
FROM 테이블

[Oracle] 문자열 자르기 :: TRIM, LTRIM, RTRIM

https://velog.io/@kmdngmn/Oracle-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%9E%90%EB%A5%B4%EA%B8%B0-TRIM-LTRIM-RTRIM

profile
BE Developer

0개의 댓글