DB/Mysql

๐Ÿ’ป[SQL] Null ์ผ ๊ฒฝ์šฐ Default ๊ฐ’ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

์™„์žโœจ 2022. 7. 15. 00:21

๐Ÿ’ป[SQL] Null ์ผ ๊ฒฝ์šฐ Default ๊ฐ’ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•

ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๊ฐ’์ด NULL ์ผ ๊ฒฝ์šฐ Default ๊ฐ’์„ ๋„ฃ์–ด ์ฃผ์–ด์•ผ ํ•  ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค. outer join์„ ํ–ˆ์„ ๋•Œ ์ผ๋ถ€ row์˜ ํ•„๋“œ ๊ฐ’์ด null์ผ ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ ์ด๋ฅผ IFNULL()๋ฅผ ํ†ตํ•ด์„œ default ๊ฐ’์„ ์ง€์ •ํ•ด์ค„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

MySQL์—์„œ๋Š” IFNULL๋กœ

My Sql ์˜ ๊ฒฝ์šฐ์—” IFNULL('Data','Default Value') ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฌธ๋ฒ•

-- ๋ฌธ๋ฒ•
IFNULL(expression_1,expression_2);

-- ์˜ˆ์ œ
SELECT
    a.id, a.name, IFNULL(b.cnt ,0) as cnt
FROM
    table_a a
        LEFT JOIN table_b b ON a.id = b.id
WHERE
    a.id = input_data.id

๋˜๋Š” ๋‹ค์Œ ๊ณผ ๊ฐ™์ด COALESCE() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SELECT
    a.id, a.name, COALESCE(b.cnt ,0) as cnt
FROM
    table_a a
        LEFT JOIN table_b b ON a.id = b.id
WHERE
    a.id = input_data.id

MS-SQL, Oracle, SQL ์„œ๋ฒ„์—์„œ๋„ ์‚ฌ์šฉ๋˜๋Š” NULLํ•จ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ๋งํฌ๋ฅผ ํ†ตํ•ด ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.


Reference