본문 바로가기
공부방/DataBase

[Oracle] 데이터베이스에서 문자열 뒤에서 자르기(RIGHT)

by SmartCow 2025. 1. 9.

Oracle 데이터베이스에서는 문자열의 끝에서 특정 길이만큼 잘라내는 RIGHT 함수가 기본적으로 제공되지 않더라.
그래서 이 기능을 사용하려면 다른 문자열 함수(예: SUBSTRLENGTH)를 조합하여 쉽게 구현해야한다.

SUBSTR 함수와 LENGTH 함수를 활용한 구현

SUBSTR 함수는 문자열의 특정 위치에서 시작하여 원하는 길이만큼 잘라낼 수 있는 Oracle 내장 함수다.
문자열의 끝에서 자르기 위해 LENGTH 함수를 사용하여 문자열의 길이를 구하고 이를 SUBSTR 함수와 함께 사용한다.

문법

SUBSTR(string, LENGTH(string) - n + 1, n)
    
  • string: 자르고자 하는 원본 문자열
  • n: 문자열 끝에서 자를 문자 개수

예제

1. 기본 사용 예제

다음은 문자열 'OracleDatabase'에서 끝에서 8자를 자르는 예제

SELECT SUBSTR('OracleDatabase', LENGTH('OracleDatabase') - 8 + 1, 8) AS result
FROM dual;
        

결과 ▶ Database

2. 테이블 데이터에서 끝 문자열 추출

다음은 employees 테이블의 email 열에서 끝 5자를 추출하는 예제

SELECT email, SUBSTR(email, LENGTH(email) - 5 + 1, 5) AS domain
FROM employees;
        

3. NULL 값 처리

만약 문자열이 NULL인 경우, 결과도 NULL이 된다.
이를 방지하기 위해 NVL 함수를 사용할 수 있다

SELECT NVL(SUBSTR(email, LENGTH(email) - 5 + 1, 5), 'N/A') AS domain
FROM employees;
        

사용 시 주의사항

  • 문자열의 길이가 n보다 짧으면 결과는 빈 문자열이 된다.
  • Oracle의 문자열은 기본적으로 VARCHAR2 타입을 사용하며, UTF-8 문자 집합을 사용하는 경우 다중 바이트 문자 처리에 유의
  • 필요한 경우 DBMS_LOB.SUBSTR를 사용하여 더 큰 문자열(Large Object, LOB)을 처리할 수 있다.

함수로 구현

재사용성을 높이기 위해 사용자 정의 함수를 작성할 수 있다

CREATE OR REPLACE FUNCTION RIGHT(str IN VARCHAR2, n IN NUMBER)
RETURN VARCHAR2 IS
BEGIN
    RETURN SUBSTR(str, LENGTH(str) - n + 1, n);
END;
    

함수 RIGHT를 호출하여 간단하게 사용할 수 있다

SELECT RIGHT('OracleDatabase', 8) AS result FROM dual;
    

결론

Oracle 데이터베이스에서는 기본적으로 제공되지 않는 RIGHT 함수 대신 SUBSTRLENGTH 함수를 조합하여 동일한 기능을 구현할 수 있다. 필요에 따라 사용자 정의 함수로 간편하게 활용할 수 있다.

'공부방 > DataBase' 카테고리의 다른 글

PL/SQL PLS-00103 오류 해결 방법  (0) 2025.03.14
[Oracle] DB링크를 통한 원격 테이블 조회 방법  (0) 2025.02.01
[MariaDB] ADD COLUMN 사용법  (0) 2025.01.03
Subquery returns more than 1 row  (0) 2024.12.19
FETCH FIRST ROW  (3) 2024.07.06