[TIL] 24.09.17 TUE

GDORI·2024년 9월 17일
0

TIL

목록 보기
44/79
post-thumbnail

오늘은 간단하게 SQL 문자열 가공하는법에 대해서만 학습했다.
group by를 연계한 방법에 대해서는 추후에 적을 예정이다.
밑에는 간단하게 정리한 내용이다

문자열을 가공해요.

Query 결과를 그대로 이용하지 않고 필요에 따라 가공 후 사용할 수 있어요.

  • REPLACE
    예시1) 최근에 상점 이름이 바뀌었지만 과거 데이터에는 옛날 이름으로 저장되어있어요

예시2) 예전에 ‘문곡리’ 라는 지명이 ‘문가리’ 로 바뀌었어요

예시와 같이 상점이름 똔느 지명이 바뀐 경우 replace를 이용하여 변경해줄 수 있습니다.

replace(바꿀 컬럼, 현재 값, 바꿀 값)

우선 상점명을 바꿔볼게요.

select restaurant_name "원래 상점명",
       replace(restaurant_name, 'Blue', 'Pink') "바뀐 상점명"
from food_orders
where restaurant_name like '%Blue Ribbon%'

위와 같이 입력하면 Blue Ribbon이 들어간 상점명이 Pink Ribbon으로 바뀐 값으로 출력될거에요.

select addr "원래 주소",
       replace(addr, '문곡리', '문가리') "바뀐 주소"
from food_orders
where addr like '%문곡리%'

위 SQL문은 문곡리를 문가리로 바꿔서 출력해요!

  • SUBSTRING

이번엔 주소 컬럼에서 풀 주소명이 아니라 시, 도만 뽑아야 하는 경우도 있을거에요.
물론 js로 처리해줄수도 있겠지만, DB에서부터 정제되어 나오면 완벽하고 편하겠죠.

substr(조회 할 컬럼, 시작 위치, 글자 수)

그럴 때 우리는 substr을 사용합니다.
근데 여기서 JS처럼 인덱스가 0부터 시작하는게 아니라,
1부터 계산해서 사용해요.

select addr "원래 주소",
       substr(addr, 1, 2) "시도"
from food_orders
where addr like '%서울특별시%'

위 SQL문처럼 입력하면 서울특별시가 들어간 주소에서 서울 만 출력할 수 있죠.

  • CONCAT

만약 서울에 있는 음식점들을 [서울] 음식점명 이런식으로 데이터를 받고 싶으면 어떻게 해야할까요.
CONCAT을 이용하면 됩니다.

concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, .....)
select restaurant_name "원래 이름",   
       addr "원래 주소",
       concat('[', substring(addr, 1, 2), '] ', restaurant_name) "바뀐 이름"
from food_orders
where addr like '%서울%'

profile
하루 최소 1시간이라도 공부하자..

0개의 댓글