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

·

2 min read

SQL 에서는 특정 문자를 다른 것으로 바꿀 수 있는 기능을 제공합니다

함수명 : replace

사용 방법

SQL

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

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

(주소의 ‘문곡리’ 를 ‘문가리’ 로 바꾸기)
select addr,
REPLACE (addr, "문곡리","문가리")
FROm food_orders
where addr like "%문곡리%"

전체 데이터가 아닌 특정 문자만 필요할 때, SQL 로 필요한 부분만 조회할 수 있습니다

함수명 : substring (substr)

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

전체 주소에서 앞부분인 ‘시도’ 부분만 필요해요

select addr,
SUBSTR(addr,1,2)
FROm food_orders
where addr like "%서울특별시%"

원하는 문자가 여러 컬럼에 있을 때, 하나로 합쳐서 업무에 필요한 형태로 만들 수 있습니다.

SQL 에서는 여러 컬럼의 값을 하나로 합칠 수 있는 기능을 제공합니다.

예시) 서울시에 있는 음식점은 ‘[서울] 음식점명’ 이라고 수정하고 싶어요.

함수명 : concat

사용 방법

SQL

복사

concat(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, .....)

[실습]
1.(서울시에 있는 음식점은 ‘[서울] 음식점명’ 이라고 수정)
SELECT restaurant_name,addr,
CONCAT("[",SUBSTR(addr,1,2),"]" ,restaurant_name)
from food_orders
WHERE addr like "%서울%"

종합 실습

[실습] 서울 지역의 음식 타입별 평균 음식 주문금액 구하기 (출력 : ‘서울’, ‘타입’, ‘평균 금액’)

SELECT SUBSTR(addr,1,2) ,cuisine_type,avg(price)  
FROM food_orders
where addr like "%서울%"
group by 1,2


[실습] 이메일 도메인별 고객 수와 평균 연령 구하기

SELECT SUBSTR(email,10) "도메인",
        COUNT(1),
        avg(age)  
FROM customers
group by 1

[실습] ‘[지역(시도)] 음식점이름 (음식종류)’ 컬럼을 만들고, 총 주문건수 구하기

SELECT CONCAT("[지역(",SUBSTR(addr,1,2),")]",restaurant_name,"(",cuisine_type,")") "음식점 종류",
count(1) "주문건수"
FROM food_orders
group by 1