Growth ๐ŸŒณ/Practice ๐Ÿ’ป

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] NULL ์ฒ˜๋ฆฌํ•˜๊ธฐ

์ธ” 2023. 1. 14. 04:37

๐Ÿ“ข ๋ณธ ํฌ์ŠคํŒ…์— ํ™œ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ๋ฌธ์ œ ๋ฐ ์ž๋ฃŒ ์ถœ์ฒ˜๋Š”

       ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต,   
       https://school.programmers.co.kr/learn/challenges?page=1&languages=mysql%2Coracle
์ž„์„ ๋ฐํž™๋‹ˆ๋‹ค.


โ–  ๋ฌธ์ œ

๋ฌธ์ œ ์„ค๋ช…

ANIMAL_INS ํ…Œ์ด๋ธ”์€ ๋™๋ฌผ ๋ณดํ˜ธ์†Œ์— ๋“ค์–ด์˜จ ๋™๋ฌผ์˜ ์ •๋ณด๋ฅผ ๋‹ด์€ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ANIMAL_INS ํ…Œ์ด๋ธ” ๊ตฌ์กฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์œผ๋ฉฐ, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE๋Š” ๊ฐ๊ฐ ๋™๋ฌผ์˜ ์•„์ด๋””, ์ƒ๋ฌผ ์ข…, ๋ณดํ˜ธ ์‹œ์ž‘์ผ, ๋ณดํ˜ธ ์‹œ์ž‘ ์‹œ ์ƒํƒœ, ์ด๋ฆ„, ์„ฑ๋ณ„ ๋ฐ ์ค‘์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

NAME TYPE NULLABLE
ANIMAL_ID VARCHAR(N) FALSE
ANIMAL_TYPE VARCHAR(N) FALSE
DATETIME DATETIME FALSE
INTAKE_CONDITION VARCHAR(N) FALSE
NAME VARCHAR(N) TRUE
SEX_UPON_INTAKE VARCHAR(N) FALSE

๋ฌธ์ œ

์ž…์–‘ ๊ฒŒ์‹œํŒ์— ๋™๋ฌผ ์ •๋ณด๋ฅผ ๊ฒŒ์‹œํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. ๋™๋ฌผ์˜ ์ƒ๋ฌผ ์ข…, ์ด๋ฆ„, ์„ฑ๋ณ„ ๋ฐ ์ค‘์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ์•„์ด๋”” ์ˆœ์œผ๋กœ ์กฐํšŒํ•˜๋Š” SQL๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”. ์ด๋•Œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ๋ชจ๋ฅด๋Š” ์‚ฌ๋žŒ๋“ค์€ NULL์ด๋ผ๋Š” ๊ธฐํ˜ธ๋ฅผ ๋ชจ๋ฅด๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฆ„์ด ์—†๋Š” ๋™๋ฌผ์˜ ์ด๋ฆ„์€ "No name"์œผ๋กœ ํ‘œ์‹œํ•ด ์ฃผ์„ธ์š”.


โ–  ํ’€์ด

  ๋ฌธ์ œ ์š”๊ตฌ์‚ฌํ•ญ  

๋™๋ฌผ์˜ ์ƒ๋ฌผ ์ข…, ์ด๋ฆ„, ์„ฑ๋ณ„ ๋ฐ ์ค‘์„ฑํ™” ์—ฌ๋ถ€๋ฅผ ์•„์ด๋”” ์ˆœ์œผ๋กœ ์กฐํšŒ       > ์ •๋ ฌ์กฐ๊ฑด

์ด๋ฆ„์ด ์—†๋Š” ๋™๋ฌผ์˜ ์ด๋ฆ„์€ "No name"์œผ๋กœ ํ‘œ์‹œ                                 > NAME์ปฌ๋Ÿผ ๋ฐ์ดํ„ฐ Null๊ฐ’์„ 'No name'์œผ๋กœ ํ‘œ์‹œ

 

ํ’€์ด1) IFNULL ์‚ฌ์šฉ

SELECT ANIMAL_TYPE,
       IFNULL(NAME, 'No name') NAME,
       SEX_UPON_INTAKE
 FROM ANIMAL_INS
 ORDER BY ANIMAL_ID;

 

ํ’€์ด2) COALESCE ์‚ฌ์šฉ

SELECT ANIMAL_TYPE,
       COALESCE(NAME, 'No name') NAME,
       SEX_UPON_INTAKE
 FROM ANIMAL_INS
 ORDER BY ANIMAL_ID;

 

ํ’€์ด3) IF๋ฌธ ์‚ฌ์šฉ

SELECT ANIMAL_TYPE,
       IF(ISNULL(NAME), 'No name', NAME) NAME,
       SEX_UPON_INTAKE
  FROM ANIMAL_INS
  ORDER BY ANIMAL_ID;

SQL NULL๊ฐ’(๊ฒฐ์ธก์น˜) ๋Œ€์ฒด ๋ฌธ๋ฒ• 3๊ฐ€์ง€

IFNULL

IFNULL(์ปฌ๋Ÿผ๋ช…, "Null์ผ ๊ฒฝ์šฐ ๋Œ€์ฒด ๊ฐ’")

 

CASE๋ฌธ

CASE WHEN ์กฐ๊ฑด์‹1 THEN ์‹1
     WHEN ์กฐ๊ฑด์‹2 THEN ์‹2
	             ...
	 ELSE ์กฐ๊ฑด์— ๋งž๋Š” ๊ฒฝ์šฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ ์‹คํ–‰ํ•  ์‹
	 END

 

COALESCE 

: ์ง€์ •ํ•œ ํ‘œํ˜„ ์ค‘ NULL์ด ์•„๋‹Œ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ๋ฐ˜ํ™˜

COALESCE(VALUE, VALUE2, ...)
 

 

๊ทธ ์™ธ IF๋ฌธ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.

IF(์กฐ๊ฑด, ์ฐธ์ผ๋–„ ๊ฐ’, ๊ฑฐ์ง“์ผ๋•Œ ๊ฐ’)