제12장 문자열 함수(String Functions) - 글자를 원하는 형태로 바꾸기
오늘의 질문
고객 목록을 출력했더니 팀장님이 말씀하셨습니다.
"고객 이름을 모두 대문자로 출력해 주세요."
잠시 후 또 다른 요청이 들어왔습니다.
"상품 이름이 너무 길어서 앞의 10글자만 보여 주세요."
이번에는 해외영업팀에서 요청합니다.
"고객 이름 앞뒤에 공백이 있는지 확인해 주세요."
데이터는 이미 저장되어 있습니다.
하지만 출력하는 모양을 바꾸고 싶을 때가 있습니다.
이처럼 문자 데이터를 원하는 형태로 가공하는 기능을 문자열 함수(String Functions)라고 합니다.
학습 목표
이번 장을 학습하면 다음 내용을 할 수 있습니다.
- 문자열 함수의 역할을 설명할 수 있다.
- UPPER()와 LOWER()를 사용할 수 있다.
- LENGTH()로 문자열 길이를 확인할 수 있다.
- LEFT(), RIGHT()로 일부 글자를 추출할 수 있다.
- CONCAT()으로 문자열을 연결할 수 있다.
- TRIM()으로 공백을 제거할 수 있다.
12-1. 문자열 함수란 무엇일까요?
생각해 봅시다.
우리는 지금까지
어떤 데이터를 가져올 것인가?
를 배웠습니다.
이제는
가져온 데이터를 어떻게 보여줄 것인가?
를 배우게 됩니다.
예를 들어
Alfreds Futterkiste
를
ALFREDS FUTTERKISTE
로 바꾸거나,
Alfreds
만 표시하는 것도 가능합니다.
🤔 왜 문자열 함수가 필요할까요?
실무에서는 저장된 데이터를 그대로 사용하는 경우보다
원하는 형태로 가공해서 출력하는 경우가 훨씬 많습니다.
예를 들면
- 모두 대문자로 출력하기
- 모두 소문자로 출력하기
- 이름 일부만 출력하기
- 여러 열을 하나로 합치기
- 공백 제거하기
등입니다.
12-2. UPPER() - 모두 대문자로 바꾸기
다음 SQL을 실행해 보세요.
SELECT CustomerName,
UPPER(CustomerName)
FROM Customers;
실행 결과(예)
| CustomerName | UPPER(CustomerName) |
| Alfreds Futterkiste | ALFREDS FUTTERKISTE |
| Around the Horn | AROUND THE HORN |
UPPER()는
모든 영문자를 대문자로 바꿉니다.
12-3. LOWER() - 모두 소문자로 바꾸기
SELECT CustomerName,
LOWER(CustomerName)
FROM Customers;
실행 결과
| CustomerName | LOWER(CustomerName) |
| Alfreds Futterkiste | alfreds futterkiste |
모든 글자가 소문자로 변경됩니다.
12-4. LENGTH() - 글자 수 알아보기
SELECT ProductName,
LENGTH(ProductName)
FROM Products;
실행 결과
| ProductName | LENGTH(ProductName) |
| Chai | 4 |
| Chang | 5 |
문자열의 길이를 알려줍니다.
12-5. LEFT() - 앞에서부터 가져오기
SELECT ProductName,
LEFT(ProductName, 5)
FROM Products;
결과
| ProductName | LEFT(ProductName,5) |
| Chef Anton's Gumbo Mix | Chef |
앞에서부터
5글자를 가져옵니다.
12-6. RIGHT() - 뒤에서부터 가져오기
SELECT ProductName,
RIGHT(ProductName, 5)
FROM Products;
뒤에서
5글자를 가져옵니다.
12-7. CONCAT() - 글자 이어 붙이기
다음 SQL을 실행해 보세요.
SELECT CONCAT(CustomerName, ' (', Country, ')')
FROM Customers;
결과
Alfreds Futterkiste (Germany)
처럼
여러 문자열을 하나로 연결할 수 있습니다.
12-8. TRIM() - 공백 제거하기
SELECT TRIM(' SQL 공부 ');
결과
SQL 공부
앞뒤 공백이 제거됩니다.
실무에서는 사용자 입력값을 정리할 때 많이 사용합니다.
💡 잠깐! 이것도 알아두세요
문자열 함수는
원래 데이터를 변경하지 않습니다.
조회 결과만 바뀝니다.
즉,
UPPER(CustomerName)
을 사용해도
Customers 테이블의 실제 데이터는 그대로 유지됩니다.
자주 하는 실수
① 함수 이름 뒤 괄호를 빼먹는다.
잘못된 예
UPPER CustomerName
올바른 예
UPPER(CustomerName)
② 함수가 데이터를 변경한다고 생각한다.
문자열 함수는
조회 결과만 변경합니다.
③ 숫자 함수와 문자열 함수를 혼동한다.
UPPER()
은 문자에 사용하는 함수입니다.
④ CONCAT에서 쉼표를 빼먹는다.
잘못된 예
CONCAT(CustomerName Country)
올바른 예
CONCAT(CustomerName, Country)
실무에서는 어떻게 사용할까요?
회사에서는 문자열 함수를 이용하여
- 이름을 대문자로 출력
- 상품 코드 일부 표시
- 주소 일부 추출
- 성과 이름 연결
- 보고서 출력 형식 변경
등을 자주 수행합니다.
웹사이트와 프로그램에서도 거의 매일 사용됩니다.
실습
실습 1
고객 이름을 모두 대문자로 출력하세요.
SELECT UPPER(CustomerName)
FROM Customers;
실습 2
상품 이름의 앞 5글자를 출력하세요.
SELECT LEFT(ProductName, 5)
FROM Products;
실습 3
고객 이름과 국가를 하나의 문자열로 출력하세요.
SELECT CONCAT(CustomerName, ' - ', Country)
FROM Customers;
실무 미션
당신은 고객관리팀 직원입니다.
보고서를 만들기 위해
다음과 같은 형식이 필요합니다.
Alfreds Futterkiste (Germany)
다음 조건을 만족하는 SQL을 작성해 보세요.
- CustomerName
- Country
- CONCAT() 사용
핵심 정리
✔ 문자열 함수는 데이터를 원하는 형태로 가공한다.
✔ UPPER()는 대문자로 변환한다.
✔ LOWER()는 소문자로 변환한다.
✔ LENGTH()는 문자열 길이를 반환한다.
✔ LEFT(), RIGHT()는 문자열 일부를 가져온다.
✔ CONCAT()은 문자열을 연결한다.
✔ TRIM()은 앞뒤 공백을 제거한다.
"함수 한눈에 보기"
| 함수 | 역할 | 예시 |
| UPPER() | 대문자로 변환 | UPPER('sql') → SQL |
| LOWER() | 소문자로 변환 | LOWER('SQL') → sql |
| LENGTH() | 문자열 길이 | LENGTH('SQL') → 3 |
| LEFT() | 왼쪽 일부 추출 | LEFT('Database', 4) → Data |
| RIGHT() | 오른쪽 일부 추출 | RIGHT('Database', 4) → base |
| CONCAT() | 문자열 연결 | CONCAT('SQL', ' ', 'Class') → SQL Class |
| TRIM() | 앞뒤 공백 제거 | TRIM(' SQL ') → SQL |
연습 문제
기본 문제
- 문자열 함수는 어떤 역할을 하나요?
- UPPER()와 LOWER()의 차이를 설명해 보세요.
- CONCAT()은 언제 사용하면 좋을까요?
응용 문제
- Products 테이블에서 상품 이름의 앞 3글자를 조회하는 SQL을 작성해 보세요.
- Customers 테이블에서 고객 이름을 모두 소문자로 출력하는 SQL을 작성해 보세요.
- CustomerName과 Country를 "고객명 (국가)" 형태로 출력하는 SQL을 작성해 보세요.
도전 문제
보고서에서 상품 이름이 너무 길게 표시됩니다.
Products 테이블에서
- ProductName
- ProductName의 앞 8글자
를 함께 조회하는 SQL을 작성해 보세요.
다음 장 예고
이번 장에서는 문자열을 원하는 형태로 바꾸는 다양한 문자열 함수를 배웠습니다.
하지만 문자열뿐 아니라 숫자 데이터도 계산하거나 가공해야 하는 경우가 많습니다.
예를 들어 사장님이 이렇게 요청할 수 있습니다.
"상품 가격을 반올림해서 표시해 주세요."
"가격의 소수점 첫째 자리까지만 보여 주세요."
이처럼 숫자를 계산하거나 원하는 형태로 변환하는 기능이 바로 숫자 함수(Numeric Functions)입니다.
다음 장에서는 다양한 숫자 함수를 이용하여 데이터를 계산하고 표현하는 방법을 배우겠습니다.
'프로그래밍 > MySQL' 카테고리의 다른 글
| 📊 [SQL 프로젝트] 제14장 날짜 함수(Date Functions) - 날짜와 시간을 자유롭게 다루기 (0) | 2026.06.30 |
|---|---|
| 📊 [SQL 프로젝트] 제13장 숫자 함수(Numeric Functions) - 숫자를 계산하고 원하는 형태로 바꾸기 (0) | 2026.06.29 |
| 📊 [SQL 프로젝트] 제11장 BETWEEN - 일정 범위의 데이터 찾기 (0) | 2026.06.29 |
| 📊 [SQL 프로젝트] 제9장 LIKE - 원하는 글자가 포함된 데이터 찾기 (0) | 2026.06.29 |
| 📊 [SQL 프로젝트] 제8장 DISTINCT - 중복된 데이터를 하나로 보기 (0) | 2026.06.29 |