[MySQL] REPLACE(), SUBSTRING(), CONCAT(), IF(), CASE

Lake·2024년 4월 10일
0

SQL

목록 보기
5/6
post-thumbnail

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

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

예)

	SELECT restaurant_name AS "원래 상점명"
           , REPLACE(restaurant_name, 'Blue', 'Pink') AS "바뀐 상점명"
	FROM food_orders
	WHERE restaurant_name LIKE '%Blue Ribbon%'

-> Blue가 Pink로 바뀌어 출력

특정 문자만 조회하기(SUBSTRING(SUBSTR))

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

예)

	SELECT addr AS "원래 주소"
           , SUBSTR(addr, 1, 2) AS "시도"
	FROM food_orders
	WHERE addr LIKE '%서울특별시%'

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

	CONCAT(붙이고 싶은 값1, 붙이고 싶은 값2, 붙이고 싶은 값3, .....)
  • 붙일 수 있는 문자의 종류
    • 컬럼
    • 한글
    • 영어
    • 숫자
    • 기타 특수문자

예1)

	SELECT restaurant_name AS "원래 이름"
    	   , addr "원래 주소",
    	   , CONCAT('[', SUBSTR(ADDR, 1, 2), ']', restaurant_name) AS "바뀐 이름"
    FROM food_orders
    WHERE addr LIKE '%서울%'
    

예2)

	SELECT SUBSTR(addr, 1, 2) AS "시도"
    , cuisine_type AS "음식 종류"
    , AVG(price) AS "평균 금액"
    FORM food_orders
    WHERE addr LIKE '%서울%'
    GROUP BY 1, 2

-> 서울 지역의 음식 타입 별 평균 음식 주문금액

조건에 따라 다른 방법을 적용하고 싶을 때(IF)

	IF(조건, 조건을 충족할 때 실행할 것, 조건을 충족하지 못 할 때 실행할 것

에)

	SELECT SUBSTR(IF(email LIKE '%gmail', REPLACE(email, 'gmail', '@gmail'), email), 10) AS "이메일 도메인";
	       , COUNT(customer_id) AS "고객 수"
	       , AVG(age) AS "평균 연령";
	FROM customers c;
	GROUP BY 1;

조건을 여러가지 지정하고 싶을 때 (CASE)

	CASE WHEN 조건1 THEN(수식)1
    	 WHEN 조건2 THEN(수식)2
    	 ELSE(수식)3
	END

예)

	SELECT restaurant_name,
           cuisine_type "원래 음식 타입",
    IF(cuisine_type='Korean', '한식', '기타') "음식 타입"
	FROM food_orders

조건1을 만족하지 못해 필터링 된 값들로 조건2를 판단한다.
-> 전체 데이터를 가지고 조건1 판단, 조건2 판단, 조건3을 판단하지 않음. 필터링 된 데이터를 가지고 새로운 조건을 판단한다.

0개의 댓글