해피 코딩!

[SQL] NULL 체크 함수 본문

SQL

[SQL] NULL 체크 함수

지속가능한 성장을 2020. 12. 21. 13:53

프로그래머스 문제를 풀이하다가 널 관련 함수를 정리하게 되었습니다.

NULL 함수 설명 지원 디비
NVL(field_name, change_value) NVL(name, 0)은 name의 값이 널이면 0 을 반환 ORACLE
ifnull(field_name, chane_value) ifnull(name, 'No name') MySQL
coalesce(sales_id, 0) sales_id가 없으면 0 반환 postgreSQL, ORACLE

문제 유형

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

여기서, 이름이 NULL인 값들을 "No name"으로 변경하기 위해 대체값을 지원하는 함수를 찾게 되었습니다.

쉽게 이야기하자면

f(x, y)에서 
x는 필드 값이 null 인지 판단하는 인자이며
y는 x가 null일 경우 대체하여 넣을 값을 정하는 인자 입니다.

예제

  • postgreSQL :

    • select goods_goods, coalesce(packing_status, 'null') as value 
      from goods_goods ;
  • MySQL :

    • select animal_Type, ifnull(name, 'No name') as 'NAME', sex_upon_intake 
      from animal_ins;
  • ORACLE :

    • select animal_Type, nvl(name, 'No name') as 'NAME', sex_upon_intake 
      from animal_ins;

주의사항

postgreSQL 에서 쿼리 실행 중 ERROR: COALESCE types character varying and integer cannot be matched이런 에러 메세지를 받게 되었다. 읽고 생각해보니 대체하려는 값이 해당 필드의 데이터타입과 맞는지 고민하지 않고 넣었기 때문에 발생한 에러이다.

이런 멍청한 실수를 다른 사람들이 겪지 않길 바란다.

'SQL' 카테고리의 다른 글

[SQL] JOIN  (0) 2020.12.22
[SQL] case 문을 사용한 조권부 쿼리 작성  (0) 2020.12.21
[프로그래머스] SQL 코딩테스트 레벨 2  (0) 2020.12.20
[프로그래머스] SQL 코딩테스트 레벨 1  (0) 2020.12.20
SQL Query과 Django - ORM  (0) 2020.12.19
Comments