사전캠프 6일차 - SQL 기초(5)

이상민·2024년 7월 25일

TIL

목록 보기
5/50

업무에 필요한 문자 포맷이 다를 때, SQL로 가공하기 (REPLACE, SUBSTRING, CONCAT)

  • 데이터를 조회하다보면, Query 결과를 그대로 이용하지 못하는 경우가 있다.
    예를들면 데이터를 보니 잘못된 값이 있어 이를 다른 문자로 수정이 필요하거나, 전체 주소가 아닌 '시도'의 정보만 필요하거나, 보고서를 작성할때 사업장과 지역명이 사업장[지역명] 과 같이 붙어서 나오길 원할때 위의 절을 이용하면 쉽게 바꿀 수 있다.

특정 문자를 다른 문자로 바꾸기(REPLACE)

replace(바꿀 컬럼, 현재 값, 바꿀 값)
select restaurant_name "원래 상점명",
       replace(restaurant_name, 'Blue', 'Pink') "바뀐 상점명"
from food_orders
where restaurant_name like '%Blue Ribbon%'
  • 위와 같이 where 절과 like 를 통해 특정 단어를 필터링 해주고 replace를 통해 blue 라는 값을 pink가 되도록 아래와 같이 바꿔줄 수 있다.

원하는 문자만 남기기(substring)

  • 전체 데이터가 아닌 특정 문자만 필요할 때 아래와 같은 substr(함수명)을 사용해 전체 주소에서 필요한 주소로만 바꿔줄 수 있다.
substr(조회 할 컬럼, 시작 위치, 글자 수)
select addr "원래 주소",
       substr(addr, 1, 2) "시도"
from food_orders
where addr like '%서울특별시%'
  • 위처럼 substr 함수를 통해 (addr(조회 할 컬럼), 1(글자의 시작위치), 2(글자 수)) 아래와 같이 필요한 단어로 바꾸어 만들 수 있다.

여러 컬럼의 문자를 합치기(CONCAT)

  • 마지막으로 원하는 문자가 여러 컬럼에 있을 때, 하나로 합쳐서 업무에 필요한 형태로 만들 때 필요한 concat 함수가 있다.
concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, .....)
  • 붙일 수 있는 문자의 종류로는 컬럼, 한굴, 영어, 숫자, 기타 특수문자가 있으며, 예시로 서울시에 있는 음식점을 [서울] 음식점명으로 변경하고 싶을때
select restaurant_name "원래 이름",   
       addr "원래 주소",
       concat('[', substring(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
from food_orders
where addr like '%서울%'
  • 위와 같이 concat 함수로 먼저 감싸준뒤 대괄호 '['와, 위에서 배웠던 substring 함수로 줄이고 싶은 컬럼(addr)을 가져온 뒤 다시 대괄호 ']'로 닫아준 뒤 음식점명(restaurant name) 을 입력해주면 아래와 같은 바뀐이름의 결과가 나온다.

0개의 댓글