본문 바로가기

공부 자료/SQL

[SQL] 문자열 자르기 SUBSTR, SUBSTRING, LEFT, RIGHT

코딩테스트 문제를 풀면서 문자열을 잘라서 활용해야 하는 경우가 있었다.

당시에는 책, 인터넷 검색이 금지였기 때문에 자바를 알고 있던 나로서는 substring과 substr이 생각나 질러 보았더니??

문자열이 진짜 잘렸네...?

그래서 SQL에서 문자열은 어떻게 자르는지 알아보고자 한다.

 

* Oracle에서 SUBSTR 함수 사용

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

: 문자열에서 시작 위치부터 길이만큼 출력

 

* MS-SQL / MySql에서는 SUBSTRING, LEFT, RIGHT 함수 사용

2. SUBSTRING(문자열, 시작 위치, 길이)

: 문자열에서 시작 위치부터 길이만큼 출력

 

3. LEFT(문자열, 길이)

: 문자열에서 왼쪽부터 길이만큼 출력

 

4. RIGHT(문자열, 길이)

: 문자열에서 오른쪽부터부터 길이만큼 출력

 

만약 문자열을 자른 것이 숫자라고 해도 문자로 인식되는데,

아래와 같은 경우이다.

SELECT SUBSTR(DATE, 1, 4)
FROM TABLE;

-- DATE = 2024/07/31
-- 결과 : 2024 >> 숫자가 아닌 문자로 인식

* 테스트 케이스에서 눈으로 보이는 결과는 동일했지만, 실패할 경우 고려해 보아야 하는 경우 중 하나이다.

만약, 숫자로 변경해야 하는 경우 to_number()을 사용하면 되며, 날짜 형식의 경우 YEAR(), MONTH()등의 함수 사용도 가능하다는 점 알아두면 좋을 것 같다.