[ 2023-09-05 ๐Ÿ” TIL ]

Burkeyยท2023๋…„ 9์›” 5์ผ
0

TIL

๋ชฉ๋ก ๋ณด๊ธฐ
155/157

LV. 2 NULL ์ฒ˜๋ฆฌํ•˜๊ธฐ ORACLE


๋ฌธ์ œ

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

NAMETYPENULLABLE
ANIMAL_IDVARCHAR(N)FALSE
ANIMAL_TYPEVARCHAR(N)FALSE
DATETIMEDATETIMEFALSE
INTAKE_CONDITIONVARCHAR(N)FALSE
NAMEVARCHAR(N)TRUE
SEX_UPON_INTAKEVARCHAR(N)FALSE

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


SQL

SELECT ANIMAL_TYPE, NVL(NAME, 'No name') as NAME ,SEX_UPON_INTAKE 
FROM (SELECT * FROM ANIMAL_INS ORDER BY ANIMAL_ID asc) 

NULL๊ฐ’์ด๋ฉด ๋‹ค๋ฅธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ NVL

์นผ๋Ÿผ๋ช…์•ˆ์˜ ๊ฐ’์ด NULL์ธ ๊ฒฝ์šฐ์— ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์ค€๋‹ค. 
NULL์ด ์•„๋‹ˆ๋ฉด ์นผ๋Ÿผ์˜ ๊ฐ’ ๋ฐ˜ํ™˜

-- oracle 
NVL(์นผ๋Ÿผ๋ช…, ๊ฐ’) 

-- sql server
ISNULL(์นผ๋Ÿผ๋ช…, ๊ฐ’)

๋™์ผํ•˜๊ฒŒ CASE๋ฌธ์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด 
CASE WHEN ์นผ๋Ÿผ๋ช… IS NULL THEN ๊ฐ’ ELSE ์นผ๋Ÿผ END ๋ฐ”๊ฟ”์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค. 

NULL๊ฐ’์„ ์‚ฌ์šฉํ•œ ํ•จ์ˆ˜

COALESCE(์นผ๋Ÿผ๋ช…, ๊ฐ’1, ๊ฐ’2, ...)
-- ์นผ๋Ÿผ๋ช…์˜ ๊ฐ’์ด NULL์ด๋ฉด ๊ฐ’1์„ ๊ฐ’1๋„ NULL์ด๋ฉด ๊ฐ’2๋ฅผ ๋ฐ˜ํ™˜, ๋ชจ๋‘ NULL์ด๋ฉด NULL ๋ฐ˜ํ™˜ํ•œ๋‹ค.

NULLIF(๊ฐ’1, ๊ฐ’2) 
-- ๋‘๊ฐœ์˜ ๊ฐ’์ด ๊ฐ™์œผ๋ฉด NULL ๋‹ค๋ฅด๋ฉด ๊ฐ’1 ๋ฐ˜ํ™˜

NULLIF('test', 'test') -- NULL
NULLIF('test', 'sql') -- 'test'

์นผ๋Ÿผ์„ ๋„ฃ์–ด์„œ ๋น„๊ตํ•  ์ˆ˜ ์žˆ๋‹ค. ์นผ๋Ÿผ๋ช…๊ณผ ๊ฐ’์„ ์„ž์–ด์„œ๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‹ค.
profile
์Šคํƒฏ ์˜ฌ๋ฆฌ๋Š” ์ค‘

0๊ฐœ์˜ ๋Œ“๊ธ€