[ORACLE] 문자열 자르기 substr( ) 활용
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번 위치까지의 문자열 추출