Oracle 데이터베이스에서는 문자열의 끝에서 특정 길이만큼 잘라내는 RIGHT
함수가 기본적으로 제공되지 않더라.
그래서 이 기능을 사용하려면 다른 문자열 함수(예: SUBSTR
와 LENGTH
)를 조합하여 쉽게 구현해야한다.
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
함수 대신 SUBSTR
와 LENGTH
함수를 조합하여 동일한 기능을 구현할 수 있다. 필요에 따라 사용자 정의 함수로 간편하게 활용할 수 있다.
'공부방 > 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 |