감자의 개발공부 일지

[Oracle] 오라클 CONCAT 함수 (문자결합, NVL, COALESCE) 본문

DB

[Oracle] 오라클 CONCAT 함수 (문자결합, NVL, COALESCE)

Elie_J 2025. 3. 6. 22:08
반응형

CONCAT 함수는 두 개의 문자열을 결합하는 함수로, 간단하고 직관적입니다. 하지만 사용에 있어 몇 가지 제한이 있습니다.
 

1. CONCAT 함수 기본 사용법

CONCAT 함수는 두 개의 문자열을 결합하는 함수입니다. 두 개의 문자열을 인자로 받으며, 결합된 문자열을 반환합니다.

 

문법

CONCAT(string1, string2)

 

예시

SELECT CONCAT('Hello', ' World') AS greeting
FROM dual;

 

실행결과

Hello World

 
=> CONCAT('Hello', ' World')는 'Hello'와 ' World'를 결합하여 'Hello World'라는 결과를 반환합니다.
 

2. CONCAT 함수의 제한 사항

CONCAT 함수는 두 개의 문자열만 결합할 수 있다는 제한이 있습니다. 만약 세 개 이상의 문자열을 결합하려면 CONCAT 함수를 여러 번 중첩해야 합니다.

 

예시

SELECT CONCAT(CONCAT('Hello', ' '), 'World') AS greeting
FROM dual;

 

실행결과

Hello World

=> 첫 번째 CONCAT가 'Hello'와 공백을 결합하고, 두 번째 CONCAT가 그 결과와 'World'를 결합하여 'Hello World'를 반환합니다.
 

3. 여러 문자열을 결합하는 더 효율적인 방법

CONCAT 함수는 두 개의 문자열만 처리할 수 있지만, 여러 문자열을 결합하려면 || 연산자가 더 유용합니다. || 연산자는 여러 개의 문자열을 한 번에 결합할 수 있습니다.

 

예시

SELECT 'Hello' || ' ' || 'World' || '!' AS greeting
FROM dual;

실행결과

Hello World!

 
 
4. 실용적인 예제: 직원의 전체 이름 결합
직원 테이블에서 이름(first_name)과 성(last_name)을 결합하여 전체 이름을 만들 수 있습니다.

예시

SELECT first_name || ' ' || last_name AS full_name
FROM employees;

 

실행결과

John Doe
Jane Smith
Alice Johnson

=>  employees 테이블에서 first_name과 last_name을 결합하여 full_name이라는 새로운 열을 생성합니다. 예를 들어, first_name이 John이고 last_name이 Doe라면, 결과는 John Doe가 됩니다.
 

5. NULL 처리 주의

CONCAT 함수나 || 연산자를 사용할 때, 하나의 문자열이 NULL이면 결과는 NULL이 됩니다. 예를 들어, first_name이 NULL이라면 first_name || ' ' || last_name은 NULL을 반환합니다.

 

예시

SELECT first_name || ' ' || last_name AS full_name
FROM employees;

 

예시데이터

first_name = NULL, last_name = 'Smith'

 
 

실행결과

NULL

=> 이런 상황을 방지하려면 NVL 함수나 COALESCE 함수를 사용하여 NULL을 처리할 수 있습니다.(아래가 그 예시 입니다.)
 

5-1 .  NVL 함수

예시

SELECT NVL(first_name, 'No First Name') || ' ' || NVL(last_name, 'No Last Name') AS full_name
FROM employees;

 
 

실행결과

No First Name Smith

=>  first_name이나 last_name이 NULL일 경우, 'No First Name' 또는 'No Last Name'을 대신 사용하여 결합합니다.
 
 

5-2 . COALESCE 함수

문법

COALESCE(ex1, ex2, ..., exN)

=> ex1, ex2, ..., exN은 순서대로 확인할 표현식들입니다. 첫 번째로 NULL이 아닌 값을 반환합니다.
 

예시

SELECT COALESCE(first_name, 'No First Name') || ' ' || COALESCE(last_name, 'No Last Name') AS full_name
FROM employees;

예시데이터_1

first_name = NULL, last_name = 'Smith'

 

 

실행결과_1

No First Name Smith

 

예시데이터_2

first_name = 'John', last_name = NULL

실행결과_2

John No Last Name

 

 

COALESCE     VS     NVL 

NVL 함수는 두 개의 인자만 처리할 수 있는 반면, COALESCE는 두 개 이상의 인자를 처리할 수 있습니다. 예를 들어, NVL을 사용하려면 두 개의 인자만 사용할 수 있지만, COALESCE는 여러 인자를 순차적으로 확인하여 첫 번째 NULL이 아닌 값을 반환합니다.
 

 

📕 오늘의 요약

오라클에서 문자열을 결합하는 데 사용할 수 있는 방법에는 CONCAT 함수와 || 연산자가 있습니다. CONCAT 함수는 두 개의 문자열만 결합할 수 있지만, || 연산자는 여러 개의 문자열을 한 번에 결합할 수 있어 더 편리합니다. 또한, NULL 값을 처리할 때는 NVL 또는 COALESCE 함수를 사용하는 것이 좋습니다.
 

반응형