배또가또 2023. 12. 6. 23:33

내일배움캠프 사전학습캠프 셋째 날

 

스파르타코딩클럽 / 엑셀보다 쉽고 빠른 SQL 3주차 수강완료

 

오늘 배운 것 간단하게 정리

 

  • REPLACE()
    • 특정한 문자열을 변경하는 함수
    • ex) REPLACE(컬럼명, '바꿀텍스트', '바뀔텍스트')
SELECT addr, 
       REPLACE(addr, '문곡리', '문가리') "바뀐주소"
FROM food_orders
WHERE addr like '%문곡리%'

  • SUBSTR ()
    • 문자열을 슬라이싱하는 함수
    • ex) SUBSTR(컬럼명, 시작위치숫자, 글자 갯수)
    • 시작위치는 1로 시작하며 공백을 포함한다. 
SELECT addr "원래 주소",
       SUBSTR(addr, 7, 2) "구" 
FROM food_orders
WHERE addr LIKE '%서울특별시%'

  • CONCAT()
    • 문자열을 합치는 함수
    • ex) CONCAT('문자열1 or 컬럼명1', '문자열2 or 컬럼명2' ...)
SELECT restaurant_name "원래 식당명",   
       addr "원래 주소",
       CONCAT('[', SUBSTR(addr, 1, 2), '] ', restaurant_name) "바뀐 식당명"
FROM food_orders
WHERE addr LIKE '%서울%'

  • IF()
    • 조건에 따라서 다른 연산을 하고 싶은 경우 사용하는 함수
    • ex) IF(조건, 충족할 때, 충족하지 않을 때)
    • 조건이 만족하면 충족할 때 부분이 실행되고 불만족하면 충족하지 않았을 때 부분이 실행된다.
SELECT addr "원래 주소",
       IF(addr LIKE '%평택군%', REPLACE(addr, '문곡리', '문가리'), addr) "바뀐 주소"
FROM food_orders
WHERE addr LIKE '%문곡리%'

  • CASE WHEN ~ THEN
    • 두 개 이상의 특정한 조건에 따라 해당 조건을  만족하는 값에 대해 다른 처리를 해주기 위한 구문
SELECT restaurant_name, 
       order_id, 
       price, 
       delivery_time, 
       addr,
       CASE WHEN delivery_time > 30 THEN (price*0.1)*IF(addr LIKE '%서울%', 1.1, 1)
            WHEN delivery_time > 25 THEN (price*0.05)*IF(addr LIKE '%서울%', 1.1, 1)
            ELSE 0
       END '수수료'
FROM food_orders

 

IF문과 CASE문을 사용할 때 조건이나 값의 부분에 여러 구문을 사용하여 복잡한 쿼리를 사용할 수 있다.