본문 바로가기
Database

[MariaDB] 흐름제어

by qoth_0 2023. 11. 22.
728x90
반응형

흐름제어

  • CASE value

    WHEN [compare_value1] THEN result1

    WHEN [compare_value2] THEN result2…

    ELSE result3

    END

  • CASE와 END로 이루어져있고, 원하는 조건내에 존재하지 않으면 ELSE문을 타고, ELSE문이 없을 경우 null을 return

실습

  • post 테이블에서 id, title, contents, 그리고 author_id의 경우 author_type이라는 이름으로 조회
  • author_id가 만약 1이면 first_author, 2이면 second_author로 조회가 되도록 하고 3 이상 그외의 경우 etc_authors로 조회하도록 하여라.
    • case when 사용하여 출력
    • if문 사용하여 동일하게 출력
post 테이블
SELECT id, title, contents, 
case author_id
	when 1 then 'First Author'
    when 2 then 'Second Author'
	ELSE 'Others'
end
as author_type from post;

  • IF()
    • IF(a, b, c)
    • a는 조건, b는 참일경우 반환 값, c는 거짓일 경우 반환 값
    • 만약 조건 a가 참이면 b를 반환하고, 거짓이면 c를 반환한다.
    • SELECT IF(0<1, ‘yes’, ‘no’);
    • 실습
      • post 테이블에서 id, title, contents, 그리고 author_id의 경우 author_type이라는 이름으로 조회
      • author_id가 만약 1이면 first_author, 그외의 경우 Others로 조회하도록 하여라.
      • if문 사용하여 출력
      SELECT id, title, contents, 
      if (author_id=1, 'First Author', 'Others') as author_type from post;

  • IFNULL(a,b)
    • 만약 a의 값이 NULL이 아니면 a 그 자체를 반환하고, NULL이면 b를 반환
    select id, title, contents, ifnull(author_id, 'anonymous') from post;
    • if문으로 출력
    select id, title, contents, if(author_id is null, 'anonymous', author_id) from post;

  • 프로그래머스 sql 문제 풀이 (case when) - 조건에 부합하는 중고거래 상태 조회하기)

    https://school.programmers.co.kr/learn/courses/30/lessons/164672

    SELECT BOARD_ID, WRITER_ID, TITLE, PRICE, 
    CASE STATUS 
        WHEN 'SALE' THEN '판매중'
        WHEN 'RESERVED' THEN '예약중'
        WHEN 'DONE' THEN '거래완료'
    END
    AS STATUS FROM USED_GOODS_BOARD WHERE CREATED_DATE = '2022-10-05' ORDER BY BOARD_ID DESC;
  • 프로그래머스 sql 문제 풀이(흐름제어(IF, IFNULL)- 12세 이하인 여자 환자 목록 출력하기)

    https://school.programmers.co.kr/learn/courses/30/lessons/132201

    SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO, 'NONE') AS TLNO FROM PATIENT WHERE AGE <= 12 AND GEND_CD = 'W' ORDER BY AGE DESC, PT_NAME ASC;

Uploaded by N2T

728x90
반응형

'Database' 카테고리의 다른 글

[MariaDB] JOIN  (1) 2023.11.22
[MariaDB] 동시성 이슈  (1) 2023.11.22
[MariaDB] 제약조건  (0) 2023.11.22
[MariaDB] 연산자  (1) 2023.11.22
[MariaDB] 데이터타입  (0) 2023.11.22