SQL | REPLACE / SUBSTR / SUBSTRING_INDEX / CONCAT 함수 정리 + 실습 문제

    728x90

     

    0. SQL 쿼리문 짤 때 알면 유용한 함수 

    SQL에도 엑셀 함수같은 기능이 있다.

    이번에는 문자열 데이터 값들을 바꿔주고, 추출하고, 이어주는 함수에 대해 자세히 알아보자.

     

    + SUBSTR 함수에 대해서는 SUBSTRING과의 차이, SUBSTRING_INDEX 함수에 대해서도 설명해 놓았다.


    1. REPLACE 함수 집중 탐구

    1-1) REPLACE 함수

    : 특정 문자다른 것으로 바꿀 수 있는 기능

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

     

    1-2) REPLACE 함수 실습문제

     

    문제1) 식당 명의 'Blue Ribbon'을 'Pink Ribbon'으로 바꾸기

    SELECT restaurant_name,
           REPLACE(restaurant_name, 'Blue', 'Pink') new_restaurant_name
    FROM food_orders fo 
    WHERE fo.restaurant_name  like '%Blue Ribbon%'


     

    문제2) 주소의 '문곡리'를 '문가리'로 바꾸기

    SELECT addr,
           REPLACE(addr, '문곡리', '문가리') new_addr
    FROM food_orders fo 
    WHERE addr like '%문곡리%'

     


    2. SUBSTR 함수 집중 탐구

    2-1) SUBSTR 함수

    : 전체 데이터가 아닌 특정 문자만 필요할 때 필요한 부분만 조회하는 기능

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

     

    ▶ SUBSTR 함수와 SUBSTRING 함수 차이?

    : RDBMS(관계형 데이터베이스 관리 시스템)에 따라 사용하는 게 다를 뿐, 똑같이 DB에서 문자열을 추출할 때 사용함.

    ORACLE MySQL
    SUBSTR()  SUBSTR(), SUBSTRING()

     

    ▶ SUBSTRING_INDEX 함수

    : 문자열을 특정 지점을 기준으로 나눌 때 사용

    SUBSTRING_INDEX(조회 할 컬럼, 나눌 기준이 되는 문자, 나눈 뒤 추출하고 싶은 문자 위치)

     

    [참고 게시글]

    - 이전에 정리해놨던 노트에도 있는 내용이어서 함께 첨부합니다.

    [IT 교육/SQL] - SQL 4주차 강의 노트정리[국비지원_스파르타 코딩클럽]

     

    SQL 4주차 강의 노트정리[국비지원_스파르타 코딩클럽]

    스파르타 코딩클럽 SQL 4주차 강의 '핵심' 노트정리 1. Subquery 개념 : Subquery(서브쿼리)는 하나의 SQL쿼리 안에 또 다른 SQL쿼리가 있는 것. ex. kakaopay로 결제한 유저들의 정보 보기(users테이블과 orders

    nasena.tistory.com

     

     

    2-2) SUBSTR / SUBSTRING_INDEX 실습문제

     

    문제1) 서울 음식점들의 주소를 전체가 아닌 '시도'만 나오도록 수정

    SELECT addr ,
           SUBSTR(addr, 1, 2) addr_sido 
    FROM food_orders fo 
    WHERE addr like '%서울%'


     

    문제2) 이메일 도메인 별 고객 수와 평균 연령 구하기

    SELECT SUBSTRING_INDEX(email, '@', -1) email_domain, 
           COUNT(customer_id) count_customer,
           AVG(age) avg_age
    FROM customers c 
    Group By SUBSTR(email, 10)

     

     

    !!개인과제 드디어 해결!!

    이 데이터는 email 컬럼의 데이터 값이 @(도메인) 앞의 글자 수 = 9글자로 동일해서

    지난 번에는 SUBSTR( ) 함수만 이용했다.

    그러면서 @앞의 아이디 글자 수가 제각각일 경우에는 어떤 쿼리문을 짜야 도메인만 뽑아낼 수 있을까?? 라는 의문점을 가지고 있었는데 이번에  해결 완료!

     

    [참고 게시글]

    - SUBSTRING_INDEX[아래 게시글 2-4번]에 도전하려고 했던 개인 과제를 드디어 해냈다. 오예 \(^0^)/ 

    [IT 교육/SQL] - SQL | Group By절과 집계 함수는 한 세트 | 집계 함수 사용 시 주의 사항

     

    SQL | Group By절과 집계 함수는 한 세트 | 집계 함수 사용 시 주의 사항

    0. Group by절과 집계함수의 연관성 Group by절을 사용하는 이유는 카테고리 별로 데이터들을 모아보고 싶기 때문일 것이다. 그런데 Group by로 카테고리를 묶게되면 필연적으로 해당 카테고리에 속했

    nasena.tistory.com

     


    3. CONCAT 함수 집중 탐구

    3-1) CONCAT 함수

    : 원하는 문자가 여러 컬럼에 있을 때 하나로 합칠 수 있는 기능

    : 붙일 수 있는 문자의 종류 >> 컬럼, 한글, 영어, 숫자, 기타 특수문자

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

     

     

    3-2) CONCAT 함수 실습문제

     

    문제) 서울시에 있는 음식점은 '[서울] 음식점명'이라고 수정

    SELECT restaurant_name, 
           addr,
           CONCAT('[', SUBSTR(addr, 1, 2), ']', restaurant_name) new_name
    FROM food_orders fo 
    WHERE addr like '%서울%'

     

    728x90

    댓글