이름, 주소, 이메일 같은 텍스트를 다룰 때 거의 항상 두 가지 중 하나를 하게 돼:
- 문자열의 일부를 추출하기
- 길이 알아내기
- 불필요한 공백 지우기
- 부분 문자열 찾거나/바꾸기
- 출력 포맷팅하기
예를 들어, 이런 게 필요할 수 있어:
- 전체 이름에서 성만 출력하기.
- 성이 'П'로 시작하는 학생 찾기.
- 모든 공백을 언더스코어로 바꾸기.
- 성을 첫 글자만 대문자로 출력하기.
이런 작업들은 PostgreSQL의 문자열 함수로 쉽게 해결할 수 있어.
LENGTH() — 문자열 길이
LENGTH() 함수는 문자열의 문자 개수를 반환해.
문법:
LENGTH(string)
예시:
SELECT name, LENGTH(name) AS name_length
FROM students;
| name | name_length |
|---|---|
| Art | 3 |
| Song | 4 |
| Pal | 3 |
이건 이름, 비밀번호, 기타 텍스트의 길이 체크할 때 유용해.
SUBSTRING() — 문자열 일부 추출
문자열에서 서브스트링을 뽑을 수 있어 — 예를 들어, 성의 처음 3글자나 이메일의 도메인 부분 등.
문법:
SUBSTRING(string FROM start FOR length)
start— 첫 글자 위치 (1부터 시작)length— 몇 글자를 추출할지
예시 1: 성의 처음 3글자
SELECT last_name, SUBSTRING(last_name FROM 1 FOR 3) AS prefix
FROM students;
| last_name | prefix |
|---|---|
| Song | Son |
| Pal | Pal |
예시 2: 이메일 도메인
SELECT email, SUBSTRING(email FROM POSITION('@' IN email) + 1) AS domain
FROM students;
| domain | |
|---|---|
| otto@example.com | example.com |
| maria@gmail.com | gmail.com |
TRIM() — 불필요한 공백 제거
문자열 앞/뒤의 공백(또는 다른 문자)을 지워줘.
문법:
TRIM([LEADING | TRAILING | BOTH] chars FROM string)
근데 보통은 이렇게 간단하게 써:
TRIM(string)
예시:
SELECT '[' || TRIM(' Art ') || ']' AS cleaned;
| cleaned |
|---|
| [Art] |
특히 사용자가 직접 데이터를 입력할 때(예: 앞에 공백 넣는 경우) 중요해.
POSITION() — 서브스트링 위치 찾기
서브스트링이 시작되는 위치를 반환해.
문법:
POSITION(substring IN string)
예시:
SELECT email, POSITION('@' IN email) AS at_position
FROM students;
| at_position | |
|---|---|
| otto@example.com | 5 |
| anna.pal@gmail.com | 9 |
SUBSTRING()이랑 같이 써서 문자열 일부를 추출할 수도 있어.
REPLACE() — 서브스트링 바꾸기
모든 서브스트링을 다른 걸로 바꿔줘.
문법:
REPLACE(string, from_substring, to_substring)
예시: 공백을 언더스코어로 바꾸기
SELECT name, REPLACE(name, ' ', '_') AS fixed_name
FROM students;
| name | fixed_name |
|---|---|
| Otto Art | Otto_Art |
| Maria Chi | Maria_Chi |
INITCAP() — 첫 글자 대문자
문자열을 각 단어의 첫 글자만 대문자로, 나머지는 소문자로 바꿔줘.
문법:
INITCAP(string)
예시:
SELECT INITCAP('anna pal') AS full_name;
| full_name |
|---|
| Anna Pal |
이름 표준화할 때 편해.
GO TO FULL VERSION