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;
-- ROGRAMOracle과 마찬가지로, 시작 인덱스는 1이므로 2~ 마지막 인덱스까지 출력된다.
SUBSTR('문자열', '시작 위치', '길이') / SUBSTRING('문자열', '시작 위치', '길이')
SELECT SUBSTR('PROGRAM',2,3) FROM DUAL;
SELECT SUBSTRING('PROGRAM',2,3) FROM DUAL;
-- ROGOracle과 마찬가지로, 길이를 매개변수로 추가하게되면 '시작 위치' ~ '시작 위치'+'길이' 에 해당하는 문자열이 출력된다.
음수 인덱스 활용하기
SELECT SUBSTR('PROGRAM',-3,2) FROM DUAL;
SELECT SUBSTRING('PROGRAM',-3,2) FROM DUAL;
-- RA
정리
문자열 자르기 함수에 대해서 Oracle과 MySQL에 큰 차이점은 없으며,
MySQL에서는 추가적으로 SUBSTRING을 같은 동작 방식으로 사용할 수 있다는 점만 기억하면 좋을 것 같다.
'SQL' 카테고리의 다른 글
| [Oracle/MySQL] CONCAT, 문자열 합치기 (0) | 2023.06.08 | 
|---|---|
| [MySQL] REGEXP, 정규표현식을 이용하여 검색하기 (0) | 2023.06.06 | 
| [Oracle/MySQL] 날짜 연산, 이전 달 출력하기 (0) | 2023.05.31 | 
| [Oracle/MySQL] NVL과 IFNULL, COALESCE로 널 값 처리하기 (0) | 2023.05.24 | 
| [Oracle/MySQL] DATE_FORMAT과 TO_CHAR, 날짜 출력하기 (0) | 2023.05.21 | 
