🚀 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
'DB_이야기' 카테고리의 다른 글
📘 [SQL 함수 정리] 정규표현식(Regex) 정리 (0) | 2025.05.20 |
---|---|
📘 [SQL 함수 정리] 숫자형 함수 (0) | 2025.05.09 |
🚀[SQL 알고리즘 문제 풀이] Programmers : 노선별 평균 역 사이 거리 조회하기(with ORDER BY) (0) | 2025.05.06 |
🚀[SQL 알고리즘 문제 풀이] Programmers : 언어별 개발자 분류하기(with 2진수, AND연산) (0) | 2025.05.06 |
🚀[SQL 알고리즘 문제 풀이] Programmers : 가격대 별 상품 개수 구하기 (with FLOOR()) (0) | 2025.05.05 |