[프로그래머스\SQL 고득점 kit] ISNULL (1~3번: Mysql) (3번: Oracle)

2021. 12. 20. 17:12·Computer Science/자료구조와 알고리즘

1. 이름이 없는 동물의 아이디 -> IS NULL

동물 보호소에 들어온 동물 중, 이름이 없는 채로 들어온 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다.

SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NULL
ORDER BY ANIMAL_ID

조건 : 이름이 없는 채로 들어온 동물의 ID -> WHERE NAME IS NULL

" == NULL " 의 형태는 쓸 수 없다 

 

2. 이름이 있는 동물의 아이디 -> IS NOT NULL

동물 보호소에 들어온 동물 중, 이름이 있는 동물의 ID를 조회하는 SQL 문을 작성해주세요. 단, ID는 오름차순 정렬되어야 합니다.

SELECT ANIMAL_ID
FROM ANIMAL_INS
WHERE NAME IS NOT NULL
ORDER BY ANIMAL_ID

조건 : 이름이 없는 채로 들어온 동물의 ID -> WHERE NAME IS NOT NULL

 

3. NULL 처리하기 -> IFNULL

입양 게시판에 동물 정보를 게시하려 합니다. 동물의 생물 종, 이름, 성별 및 중성화 여부를 아이디 순으로 조회하는 SQL문을 작성해주세요. 이때 프로그래밍을 모르는 사람들은 NULL이라는 기호를 모르기 때문에, 이름이 없는 동물의 이름은 "No name"으로 표시해 주세요.

SELECT ANIMAL_TYPE, IFNULL(NAME,"No name") AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID

ANIMAL_TYPE, NAME, SEX_UPON_INTAKE 조회

여기서 NAME은 NULL일 때, "No name" , NULL이 아닐 때 NAME으로 분류된다.

이때 사용하는 함수는 " IFNULL"

 

cf) IFNULL vs NULLIF 

  • IFNULL(A, B) : A가 NULL이면 B리턴, A가 NULL이 아니면 A를 리턴
  • NULLIF(A,B) : A==B이면 NULL 리턴, A!=B이면 A 리턴

 

 ** ORACLE의 경우, 더 많은 함수를 쓸 수 있다!

 

NVL, NVL2, DECODE

  • NVL(A,B) : A가 NULL이면 B 리턴, A가 NULL이 아니면 A를 리턴 (MySQL의 IFNULL과 동일)
  • NVL2(A,NULL이 아닐경우 값,NULL일 경우의 값) : A,  A가 NULL이 아닐 경우와 A가 NULL일 경우
  • DECODE(A,IF_1, THEN_1, IF_2, THEN2, ...,default값) : 우리가아는 case문이랑 비슷, A가 IF_1이면 THEN_1, IF_2면 THEN_2 ... 없으면 default값 리턴
--NVL 사용
SELECT ANIMAL_TYPE, NVL(NAME,'No name') AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

--NVL2 사용
SELECT ANIMAL_TYPE, NVL2(NAME,NAME,'No name') AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

--DECODE 사용
SELECT ANIMAL_TYPE, DECODE(NAME, NULL,'No name',NAME) AS NAME, SEX_UPON_INTAKE
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

 

저작자표시 비영리 변경금지 (새창열림)

'Computer Science > 자료구조와 알고리즘' 카테고리의 다른 글

[프로그래머스\SQL 고득점 kit] String, Date - mysql (1,2번)  (0) 2021.12.24
[프로그래머스\SQL 고득점 kit] JOIN (1~4번 : mysql) LEFT OUTER JOIN 사용  (0) 2021.12.22
[프로그래머스\SQL 고득점 kit] GROUP BY - 입양 시각 구하기(2) 풀이 2가지 (mysql)  (0) 2021.12.18
[프로그래머스\SQL 고득점 kit] GROUP BY - 입양 시각 구하기(1) 풀이 3가지 mysql  (0) 2021.12.18
[프로그래머스\SQL 고득점 kit] GROUP BY - 고양이와 개는 몇마리 있을까, 동명 동물 수 찾기 (mysql)  (0) 2021.12.17
'Computer Science/자료구조와 알고리즘' 카테고리의 다른 글
  • [프로그래머스\SQL 고득점 kit] String, Date - mysql (1,2번)
  • [프로그래머스\SQL 고득점 kit] JOIN (1~4번 : mysql) LEFT OUTER JOIN 사용
  • [프로그래머스\SQL 고득점 kit] GROUP BY - 입양 시각 구하기(2) 풀이 2가지 (mysql)
  • [프로그래머스\SQL 고득점 kit] GROUP BY - 입양 시각 구하기(1) 풀이 3가지 mysql
BS Kwak
BS Kwak
  • BS Kwak
    Slow but steady wins the race
    BS Kwak
  • 전체
    오늘
    어제
    • 카테고리 (161)
      • Project (2)
      • Next.js (3)
      • HTML+CSS+JS (17)
      • Computer Science (139)
        • Programming Language (52)
        • 자료구조와 알고리즘 (75)
        • Digital circuit (3)
        • 기타 error (9)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 깃허브
  • 공지사항

  • 인기 글

  • 태그

    런타임 에러
    leetcode
    cmd error
    LNK2001
    c++error
    티스토리챌린지
    mysql error
    오블완
    해시
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
BS Kwak
[프로그래머스\SQL 고득점 kit] ISNULL (1~3번: Mysql) (3번: Oracle)
상단으로

티스토리툴바