SQL_Substring, case

libramin·2022년 8월 29일
0

SQL

목록 보기
5/5
post-thumbnail

SUBSTRING

문자열을 잘라 추출한다.

  • SUBSTRING_INDEX(필드명, '기준', 앞/뒤)
    • 앞 : 1, 뒤 : -1
//예시 abc@abcd.com

select email,SUBSTRING_INDEX(email,'@',1) from users
//출력결과 : abc
select email,SUBSTRING_INDEX(email,'@',1) from users
//출력결과 : abcd.com
  • SUBSTRING(필드명, 시작점, 끝나는점)
//예시 2022-08-01 20:07:13

select created_at SUBSTRING(created_at,1,10) from orders
//출력결과 : 2020-08-01

select created_at SUBSTRING(created_at,12,8) from orders
//출력결과 : 20:07:13

Case

경우에 따라 원하는 값을 새 필드에 출력

  • case when 조건 then '참일때의 값' else '거짓일때의 값' end
//포인트가 10,000이상일 때 greate 아닐 때 good을 출력하는 msg필드를 생성
select pu.user_id, pu.point,
       (case when pu.point > 10000 then 'great!'
        else 'Good' end) as msg
from pu.point_users pu

// 포인트 구간별 유저 수를 나타내라.
select a.lv, count(*) as cnt from (
	select pu.user_id, pu.point,
           (case when pu.point > 10000 then '1만 이상'
                 when pu.point > 5000 then '5천 이상'
            else 'Good' end) as lv
      from pu.point_users pu
) a
group by a.lv

// 복습) with를 이용해서 깔끔하게 표시, 위 결과와 같다.
with table1 as (
	select pu.user_id, pu.point,
           (case when pu.point > 10000 then '1만 이상'
                 when pu.point > 5000 then '5천 이상'
            else 'Good' end) as lv
      from pu.point_users pu
)

select a.lv, count(*) as cnt from table1
group by a.lv
profile
Hello, I'm libramin!

0개의 댓글