DATABASE

[ORACLE] 문자열 자르기 substr( ) 활용

오래오래 늘 함께 2018. 11. 2. 17:17

1. 특수문자를 포함하여 뒤에 4자리는 제외하고 문자열 자르기

select val

from (

select '1231244-111' as val from dual

union all

select '12312534444*341' as val from dual

union all

select '1231223523544_523' as val from dual) a



select reverse(val-- 문자열을 반대로

from (

select '1231244-111' as val from dual

union all

select '12312534444*341' as val from dual

union all

select '1231223523544_523' as val from dual) a



select substr(reverse(val), 5) -- 시작위치 5부터 문자열 끝까지 자르기 (문자열의 위치는 1부터 시작)

from (

select '1231244-111' as val from dual

union all

select '12312534444*341' as val from dual

union all

select '1231223523544_523' as val from dual) a



select reverse(substr(reverse(val), 5)) 

from (

select '1231244-111' as val from dual

union all

select '12312534444*341' as val from dual

union all

select '1231223523544_523' as val from dual) a




▷▶  마지막 ' / ' 이후의 문자열만 추출하기


SELECT 

reverse(substr(reverse(DATA),1, instr(reverse(DATA),'/') -1))  

FROM (

SELECT 'oracle/web/programing.java' DATA

FROM DUAL

);

 


INSTR(비교할 문자, 비교하고자하는 문자, [비교를 시작할 위치],[비교하고자하는 문자 몇번째 위치])

: 비교하고자하는 문자의 위치값 반환 ( 몇번째 위치값 생략시 첫번째 위치값 반환)


instr(reverse(DATA),'/') -> 16


☞ substr(reverse(DATA),1, instr(reverse(DATA),'/') -1)

   

   = substr(reverse(DATA, 1 , 15)  1~15번 위치까지의 문자열 추출