CodeGym /행동 /SQL SELF /문자열 포맷팅: CONCAT(), UPPER(), LOWER()

문자열 포맷팅: CONCAT(), UPPER(), LOWER()

SQL SELF
레벨 5 , 레슨 1
사용 가능

텍스트 데이터 다루는 건 DB 작업에서 맨날 하는 일이야. 예를 들어, 너가 인터넷 쇼핑몰 개발자라고 치자. 유저 DB가 있는데, 사이트에 유저 전체 이름을 환영 배너에 띄워야 해. 예를 들면: "환영합니다, Otto Art!". 또는 이메일 주소를 전부 소문자로 표준화해야 할 수도 있지. 이런 상황에서 문자열 함수 없으면 진짜 불편해.

PostgreSQL은 텍스트 다루는 데 쓸만한 함수들이 많아. 오늘은 그중에서 세 가지 기본 함수만 딱 짚고 갈게:

  • CONCAT() — 문자열 합치기.
  • UPPER() — 문자열을 대문자로 바꾸기.
  • LOWER() — 문자열을 소문자로 바꾸기.

CONCAT() 함수 다루기

CONCAT() 함수는 여러 문자열을 하나로 이어붙여 줘. 만약 데이터가 여러 컬럼에 나눠져 있는데, 합쳐서 보여주고 싶을 때 완전 필수야.

문법

CONCAT(string1, string2, ..., stringN)
  • string1, string2, stringN — 합치고 싶은 문자열이나 컬럼.
  • 모든 인자를 이어붙인 하나의 문자열을 반환해.

예시: 이름 처리하기

예를 들어, students 테이블이 있다고 해보자:

first_name last_name
Otto Art
Maria Chi
Anna Pal

목표: 학생 전체 이름을 "이름 성" 형식으로 보여주기.

쿼리:

SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM students;

결과:

full_name
Otto Art
Maria Chi
Anna Pal

이름과 성 사이 ' '에 주목! 이건 우리가 문자열 사이에 띄어쓰기를 넣으려고 추가한 거야.

사용할 때 주의할 점

CONCAT()NULL을 무시해. 만약 인자 중 하나가 NULL이면 그냥 건너뛰어. 아직 NULL이 뭔지 모르면 걱정 마, 곧 설명해줄게.

CONCAT() 대신 || 연산자도 쓸 수 있어. 예를 들면:

SELECT first_name || ' ' || last_name AS full_name FROM students;

문자열 대소문자 바꾸기: UPPER()LOWER()

이메일 주소를 다룬다고 해보자. 유저들이 ivan@example.com, IVAN@EXAMPLE.COM처럼 각자 다른 대소문자로 입력했을 수 있어. 표준화하려면 보통:

  • 비교 전에 전부 같은 형태(예: lowercase)로 바꿔.
  • 중요한 단어는 강조하려고(UPPERCASE로) 바꿔 쓰기도 해.

UPPER(): 문자열을 대문자로

UPPER() 함수는 문자열을 전부 대문자로 바꿔줘.

문법:

UPPER(string)
  • string — 문자열이나 텍스트 컬럼 이름.

예시:

students 테이블에 email 컬럼이 추가됐다고 해보자:

first_name last_name email
Otto Art otto@example.com
Maria Chi MARIA@EXAMPLE.com
Anna Pal anna.pal@mail.ru

이메일을 전부 대문자로 보여주고 싶으면:

SELECT email, UPPER(email) AS email_upper
FROM students;

결과:

email email_upper
otto@example.com OTTO@EXAMPLE.COM
MARIA@EXAMPLE.com MARIA@EXAMPLE.COM
anna.pal@gmail.com ANNA.PAL@GMAIL.COM

LOWER(): 문자열을 소문자로

마찬가지로, LOWER() 함수는 문자열을 전부 소문자로 바꿔줘.

문법:

LOWER(string)

예시:

이메일을 전부 소문자로 바꿔보자:

SELECT email, LOWER(email) AS email_lower
FROM students;

결과:

email email_lower
otto@example.com otto@example.com
MARIA@EXAMPLE.com maria@example.com
anna.pal@gmail.com anna.pal@gmail.com

실전 예제랑 케이스

지금까지 배운 거 다 합쳐보자.

전체 이름을 대문자로 만들기

쿼리:

SELECT CONCAT(UPPER(first_name), ' ', UPPER(last_name)) AS full_name_upper
FROM students;

결과:

full_name_upper
OTTO ART
MARIA CHI
ANNA PAL

여기서는 CONCAT()로 이름과 성을 합치고, UPPER()로 전부 대문자로 바꿨어.

예시: 이메일 주소 표준화

이메일을 전부 소문자로 통일하고 싶으면:

UPDATE students
SET email = LOWER(email);

이제 테이블에 있는 이메일들은 원래 대소문자 상관없이 전부 똑같이 소문자로 저장돼.

UPDATE 연산자가 어떻게 동작하는지는 다음 강의에서 알려줄게.

유저 환영 메시지 만들기

전체 이름 앞에 "환영합니다" 메시지를 붙여보자:

SELECT CONCAT('환영합니다, ', first_name, ' ', last_name, '!') AS greeting
FROM students;

결과:

greeting
환영합니다, Otto Art!
환영합니다, Maria Chi!
환영합니다, Anna Pal!

문자열 함수 쓸 때 흔한 실수

CONCAT()에서 띄어쓰기 빼먹으면 결과가 이상하게 나올 수 있어. 예를 들어:

SELECT CONCAT(first_name, last_name) AS full_name
FROM students;

결과는 "OttoArt", "MariaChi"처럼 붙어서 나와. 꼭 필요한 곳에 띄어쓰기 추가해줘.

NULL 사용. CONCAT() 인자 중 하나가 NULL이면 문자열이 이상하게 나올 수 있어. 예를 들어:

SELECT CONCAT(first_name, ' ', middle_name, ' ', last_name) AS full_name
FROM students;

만약 middle_name = NULL이면 결과가 "Otto NULL Art"처럼 돼. 이럴 땐 COALESCE() 함수를 쓰면 돼:

SELECT CONCAT(first_name, ' ', COALESCE(middle_name, ''), ' ', last_name) AS full_name
FROM students;

NULL이랑 COALESCE() 함수에 대해서는 곧 더 자세히 알려줄게 :P

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION