SQL

[Oracle/MySQL] SUBSTR과 SUBSTRING, 문자열 자르기

limnj 2023. 5. 20. 15:49
반응형

Oracle과 MySQL 에 있는 '문자열 자르기' 기능에 대해 정리를 해보려한다.


Oracle에서 문자열 자르기

SUBSTR('문자열','시작 위치') 을 통해 문자열을 자를 수 있다.

혹은, SUBSTR('문자열', '시작 위치', '길이') 처럼 길이를 추가하여 원하는 길이만큼의 문자열을 가져올 수 있다.

 

SUBSTR('문자열','시작 위치')

SELECT SUBSTR('PROGRAM',2) FROM DUAL;
-- ROGRAM

주의할 점은 시작 위치에서 첫번째 인덱스는 0이 아닌 1이라는 것이다.

그러므로 결과값은, ROGRAM 이 된다.

 

SUBSTR('문자열', '시작 위치', '길이')

SELECT SUBSTR('PROGRAM',2,3) FROM DUAL;
-- ROG

길이를 매개변수로 추가하게되면 '시작 위치' ~ '시작 위치'+'길이' 에 해당하는 문자열이 출력된다.

그러므로 결과값은, ROG 이 된다.

 

음수 인덱스 활용하기

SELECT SUBSTR('PROGRAM',-3,2) FROM DUAL;
-- RA

추가적으로 필요에 따라 음수 인덱스를 활용하여 좀 더 편리하게 사용할 수도 있다.

음수 인덱스의 넘버는 문자열 끝에서부터 -1,-2,-3, .. 이다.

 


MySQL에서 문자열 자르기

SUBSTR('문자열','시작 위치')과 SUBSTRING('문자열','시작 위치') 모두 가능하다.

 

SUBSTR('문자열','시작 위치') / SUBSTRING('문자열','시작 위치')

SELECT SUBSTR('PROGRAM',2) FROM DUAL;
SELECT SUBSTRING('PROGRAM',2) FROM DUAL;
-- ROGRAM

Oracle과 마찬가지로, 시작 인덱스는 1이므로 2~ 마지막 인덱스까지 출력된다.

 

SUBSTR('문자열', '시작 위치', '길이') / SUBSTRING('문자열', '시작 위치', '길이')

SELECT SUBSTR('PROGRAM',2,3) FROM DUAL;
SELECT SUBSTRING('PROGRAM',2,3) FROM DUAL;
-- ROG

Oracle과 마찬가지로, 길이를 매개변수로 추가하게되면 '시작 위치' ~ '시작 위치'+'길이' 에 해당하는 문자열이 출력된다.

 

음수 인덱스 활용하기

SELECT SUBSTR('PROGRAM',-3,2) FROM DUAL;
SELECT SUBSTRING('PROGRAM',-3,2) FROM DUAL;
-- RA

 


정리

문자열 자르기 함수에 대해서 Oracle과 MySQL에 큰 차이점은 없으며, 

MySQL에서는 추가적으로 SUBSTRING을 같은 동작 방식으로 사용할 수 있다는 점만 기억하면 좋을 것 같다.

반응형