[PostgreSQL]COALESCE ํ•จ์ˆ˜

๋ฌธ๋ฒ•

COALESCE(์ปฌ๋Ÿผ, ๋Œ€์ฒด๊ฐ’1โ€ฆ๋Œ€์ฒด๊ฐ’n)

๐Ÿ‘‰ ์ปฌ๋Ÿผ์ด null์ธ ๊ฒฝ์šฐ์— ๋Œ€์ฒด๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜

๋Œ€์ฒด๊ฐ’์ด null์ด ์•„๋‹Œ ๊ฐ’์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ ๋Œ€์ฒด๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜จ๋‹ค.

COALESCE(name, null, null, null, 2)
-> return 2

ํ™œ์šฉ

SELECT price, seat FROM events;
price seat
100000 50
55000 null
80000 279

์—ฌ๊ธฐ์„œ price์™€ seat๋ฅผ ๊ณฑํ•œ ๊ฐ’์„ total์ด๋ผ๊ณ  ํ•  ๋•Œ, null์ด ์žˆ์œผ๋ฉด ๊ฐ’๋„ null์ด ๋‚˜์˜ค๊ธฐ ๋•Œ๋ฌธ์— ์ € ๊ฐ’์„ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์น˜ํ™˜ํ•ด์•ผํ•œ๋‹ค.

SELECT price, seat,
  price * COALESCE(seat, 0) as total
FROM seat;
price seat total
100000 50 5000000
55000 null 0
80000 279 22320000

์ด๋Ÿฐ์‹์œผ๋กœ ํ…Œ์ด๋ธ”์ด ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ฃผ์˜์‚ฌํ•ญ

COALESCE ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ๋“ค์–ด๊ฐ€๋Š” parameter์˜ ๊ฐ’์€ ํ•ญ์ƒ ๋˜‘๊ฐ™์€ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด์–ด์•ผํ•œ๋‹ค. ์œ„์— ๊ทธ๋ ค์ง„ ํ‘œ๋Š” parameter์ด ์ „๋ถ€ integer์ด์–ด์„œ ๊ดœ์ฐฎ์•˜์ง€๋งŒ, string๊ณผ integer์„ ์—ฐ์‚ฐํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— string์„ integer๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค.

ref. https://augustines.tistory.com/64


Written by@UndefinedP
๊ธฐ๋ก์„ ์ž˜ ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ณ  ์‹ถ์–ด์š”

GitHub