본문 바로가기
DB_이야기

📘 [SQL 함수 정리] 문자열 함수 총정리

by gwon_s 2025. 5. 9.

🚀 SQL 면접과 실무에서 자주 등장하는 문자열 함수들을 한눈에 정리해봅니다.
문자열 결합, 추출, 삭제, 치환까지 자주 쓰이는 함수 위주로 정리했어요!


✅ 요약 표

함수명설명예시 결과
함수명 설명 예시 결과
LOWER(s) 소문자 변환 LOWER('ABC') → abc
UPPER(s) 대문자 변환 UPPER('abc') → ABC
ASCII(s) 문자 → 코드 ASCII('A') → 65
CHR(n) 코드 → 문자 CHR(65) → A
CONCAT(s1,s2) 문자열 결합 CONCAT('A','B') → AB
SUBSTR(s,m,n) 문자열 추출 SUBSTR('Hello',2,3) → ell
INSTR(s,sub) 위치 반환 INSTR('banana','a') → 2
LENGTH(s) 길이 반환 LENGTH('AB CD') → 5
TRIM() 양쪽 문자 제거 TRIM('#' FROM '#AB#') → AB
LPAD(s,n,p) 왼쪽 채우기 LPAD('123',5,'0') → 00123
RPAD(s,n,p) 오른쪽 채우기 RPAD('123',5,'0') → 12300
REPLACE(s,o,n) 문자열 치환 REPLACE('AA','A','B') → BB
TRANSLATE(s,o,n) 문자 치환 TRANSLATE('AB','AB','XY') → XY
  • SUBSTR는 음수 인덱스도 허용해서 뒤에서부터 자르기 가능
  • INSTR은 특정 문자가 몇 번째에 등장하는지 찾을 때 유용
  • TRIM / LTRIM / RTRIM은 공백이나 특정 문자 제거할 때 필수
  • REPLACE vs TRANSLATE 차이 헷갈릴때
    • REPLACE: 문자열 단위 교체
    • TRANSLATE: 문자 단위 매핑

1. LOWER(s) - 소문자 변환

✔️ 문자열 s를 모두 소문자로 변환합니다.

SELECT LOWER('HelloWorld');  -- 결과: helloworld

2. UPPER(s) - 대문자 변환

✔️ 문자열 s를 모두 대문자로 변환합니다.

SELECT UPPER('HelloWorld');  -- 결과: HELLOWORLD

3. ASCII(s) - ASCII 코드 반환

✔️ 문자열의 첫 번째 문자의 ASCII 코드를 반환합니다.

SELECT ASCII('A');   -- 결과: 65
SELECT ASCII('가');   -- 결과: 44032 (한글도 지원)

4. CHR(n) - ASCII 코드 → 문자

✔️ 숫자 n에 해당하는 ASCII 문자를 반환합니다.

SELECT CHR(65);     -- 결과: A
SELECT CHR(44032);  -- 결과: 가

5. CONCAT(s1, s2) - 문자열 결합

✔️ 문자열 s1과 s2를 연결합니다.

SELECT CONCAT('Data', 'Base');  -- 결과: DataBase

 

💡 || 연산자로도 결합 가능: SELECT 'Data' || 'Base';


6. SUBSTR(s, m, n) - 부분 문자열 추출

✔️ 문자열 s에서 m번째 위치부터 n개 문자를 반환합니다.

SELECT SUBSTR('ORACLE', 2, 3);   -- 결과: RAC
SELECT SUBSTR('ORACLE', -4, 3);  -- 결과: RAC (뒤에서부터 추출)

7. INSTR(s, sub) - 부분 문자열 위치

✔️ 문자열 s에서 sub가 처음 등장하는 위치를 반환합니다.

SELECT INSTR('banana', 'a');      -- 결과: 2
SELECT INSTR('banana', 'a', 3, 2); -- 결과: 6 (3번째부터 2번째 'a')

8. LENGTH(s) - 문자열 길이

✔️ 문자열 s의 전체 길이를 반환합니다.

SELECT LENGTH('AB CD');  -- 결과: 5 (공백 포함)

9. TRIM, LTRIM, RTRIM - 공백/문자 제거

✔️ 문자열의 양쪽, 왼쪽, 오른쪽에서 지정한 문자를 제거합니다.

SELECT TRIM(BOTH '#' FROM '#ABC#');     -- 결과: ABC
SELECT LTRIM('#ABC#', '#');             -- 결과: ABC#
SELECT RTRIM('#ABC#', '#');             -- 결과: #ABC

10. LPAD(s, n, pad) / RPAD(s, n, pad) - 문자열 채우기

✔️ s의 왼쪽 또는 오른쪽에 pad 문자를 붙여 길이를 n으로 맞춥니다.

SELECT TRIM(BOTH '#' FROM '#ABC#');     -- 결과: ABC
SELECT LTRIM('#ABC#', '#');             -- 결과: ABC#
SELECT RTRIM('#ABC#', '#');             -- 결과: #ABC

11. REPLACE(s, old, new) - 문자열 치환

✔️ 문자열 s에서 old 문자열을 찾아 new로 치환합니다.

SELECT REPLACE('ABABAB', 'AB', 'X');  -- 결과: XXX

12. TRANSLATE(s, old, new) - 문자 단위 치환

✔️ s에서 old의 각 문자를 new의 문자로 바꿉니다 (문자 단위 대응).

SELECT TRANSLATE('ABABAB', 'AB', 'XY');  -- 결과: XYXYXY