CS

[SQLD] 함수의 개요 및 문자함수

2026년 02월 13일 11:15

SQLD 2과목 – 함수의 개요 및 문자함수

함수 개요

데이터를 가공·변환·계산하여 새로운 결과를 반환하는 객체이다.
SELECT, WHERE, GROUP BY, HAVING, ORDER BY 절에서 사용 가능하다.

함수의 분류

① 입력값 수 기준

  • 단일행 함수: 1행 → 1결과
  • 복수행 함수(집계 함수): 여러 행 → 1결과

② 입·출력 타입 기준

  • 문자 함수
  • 숫자 함수
  • 날짜 함수
  • 변환 함수
  • 일반 함수

문자 함수

1. UPPER / LOWER / INITCAP

  • UPPER : 대문자 변환
  • LOWER : 소문자 변환
  • INITCAP : 첫 글자만 대문자
SELECT UPPER('hdatalab'),   -- 'HDATALAB'
       LOWER('HDATALAB'),   -- 'hdatalab'
       INITCAP('hdatalab')  -- 'Hdatalab'
    FROM DUAL;

2. LENGTH / LENGTHB

  • LENGTH : 문자 수 반환
  • LENGTHB : Byte 수 반환
  • 한글은 캐릭터셋에 따라 2~4Byte
SELECT LENGTH('제주도')  -- 3
       LENGTHB('제주도') -- 6
    FROM DUAL;

3. CONCAT

  • 두 문자열을 결합
  • 두 개만 결합 가능
SELECT CONCAT('AB', 'CD')    -- 'ABCD'
    FROM DUAL;

※ Oracle에서는 || 연산자 사용 가능

4. SUBSTR

  • 문자열 일부 추출
SUBSTR(문자열, 시작위치 [, 추출개수])

특징

  • 시작위치가 0보다 작으면 뒤에서부터 검색
  • 추출개수 생략 시 -1
  • 결과는 문자 타입
SELECT SUBSTR('서울시 강남구', 1, 3)  -- '서울시'
    FROM DUAL;
-- 문자열에서 첫번째 글짜부터 세 글자를 추출하여 출력함

5. INSTR

  • 문자열 내 특정 문자열의 위치 반환
INSTR(문자열, 찾을문자열 [, 시작위치] [, 몇번째])

특징

  • 시작위치 생략 시 1
  • 시작위치 < 0 → 뒤에서부터 검색
  • 발견횟수 생략 시 1로 설정되어 첫번째로 발견되는 문자열의 위치 반환
  • 찾는 문자열 없으면 0 반환
SELECT INSTR('123#45#6#789#0', '#')  -- 4
    FROM DUAL;
-- 문자열에서 첫번째 위치부터 검색하여 가장 처음발견되는 # 위치를 숫자로 반환

6. LPAD / RPAD

  • 문자열 왼쪽/오른쪽에 특정 문자 삽입
LPAD(문자열, 총길이 [, 삽입문자])
RPAD(문자열, 총길이 [, 삽입문자])

특징

  • 삽입문자 생략 시 공백 삽입
  • 총길이는 Byte 기준
SELECT LPAD('abcd', 10, '*')  -- '******abcd'
    FROM DUAL;
-- abcd 문자열 왼쪽에 *을 삽입하여 전체 크기가 10Byte가 되도록 출력

7. LTRIM / RTRIM

  • 문자열 왼쪽/오른쪽의 특정 문자 제거
LTRIM(문자열 [, 제거문자])
RTRIM(문자열 [, 제거문자])

특징

  • 제거문자 생략 시 공백 제거
  • 연속된 문자만 제거
SELECT LTRIM('###AB#C', '#') -- 'AB#C'
    FROM DUAL;
-- ###AB#C 문자열에서 왼쪽부터 연속된 # 문자만 제거

8. TRIM

  • 문자열 양쪽 공백 제거
  • 제거문자 지정 불가 (공백만 제거)
TRIM(문자열)
SELECT TRIM('  AB  ')   -- 'AB'
    FROM DUAL;
-- 양쪽에서 공백이 제거된 후 총 2자 길이의 문자열 반환

9. REPLACE

  • 문자열 치환 또는 삭제
REPLACE(문자열, 찾을문자열 [, 바꿀문자열])

특징

  • 바꿀문자열 생략 시 삭제
SELECT REPLACE('ABCBA', 'AB', 'ab'), -- 'abCBA'
       REPLACE('ABCBA', 'AB', ''),   -- 'CBA'
       REPLACE('ABCBA', 'AB')        -- 'CBA'
    FROM DUAL;
-- 바꿀 문자열을 생략하거나 빈 문자열을 전달하면 찾을 문자열이 삭제됨

10. TRANSLATE

  • 문자 단위 1:1 치환
TRANSLATE(문자열, 찾을문자열, 바꿀문자열)

특징

  • 문자 단위 매핑
  • 길이 불일치 시
    • 찾을문자열이 더 길면 남는 문자 삭제
    • 바꿀문자열이 더 길면 남는 문자 무시
SELECT TRANSLATE('ABCBA', 'AB', 'ab') -- 'abCba'
    FROM DUAL;
-- 'A'와 'B'가 각각 대응되는 문자 'a', 'b'로 치환되어 출력

11. CHR

  • ASCII 코드값에 해당하는 문자 반환
CHR(숫자)

특징

  • ASCII 코드 10은 줄바꿈 문자
  • ASCII 코드 65은 'A'
  • ASCII 코드 97은 'a'
SELECT 'AB' || CHR(10) || 'CD'
    FROM DUAL;
-- AB
-- CD
-- SQL 출력 화면에서는 줄바꿈이 적용되지 않아 'ABCD'로 출력됨