ํ•จ์ˆ˜(Function)

๋‚˜์ฐฌ์›…ยท2024๋…„ 10์›” 11์ผ

DB

๋ชฉ๋ก ๋ณด๊ธฐ
2/10

๐Ÿ“Œ ํ•จ์ˆ˜(Function)

ํ•˜๋‚˜์˜ ํฐ ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ถ€๋ถ„๋“ค์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์ž‘์„ฑํ•ด ๋†“์€ ์ž‘์€ ์„œ๋ธŒ ํ”„๋กœ๊ทธ๋žจ
ํ˜ธ์ถœํ•˜๋ฉฐ ๊ฐ’์„ ์ „๋‹ฌํ•˜๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์‚ฌ์šฉ

โœ” ์œ ํ˜•

  • ๋‹จ์ผ ํ–‰ ํ•จ์ˆ˜ : N๊ฐœ์˜ ๊ฐ’์„ ์ฝ์–ด์„œ ์—ฐ์‚ฐ ํ›„ N๊ฐœ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜

  • ๊ทธ๋ฃน ํ•จ์ˆ˜ : N๊ฐœ์˜ ๊ฐ’์„ ์ฝ์–ด์„œ ์—ฐ์‚ฐ ํ›„ 1๊ฐœ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜(ํ•ฉ๊ณ„, ํ‰๊ท , ์ตœ๋Œ€, ์ตœ์†Œ)

  • ํ•จ์ˆ˜๋Š” SELECT ๋ฌธ์˜
    SELECT์ ˆ, WHERE์ ˆ, ORDER BY์ ˆ, GROUP BY์ ˆ, HAVING์ ˆ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
  • LENGTH(์ปฌ๋Ÿผ๋ช… | ๋ฌธ์ž์—ด) : ๊ธธ์ด ๋ฐ˜ํ™˜
  • INSTR(์ปฌ๋Ÿผ๋ช… | ๋ฌธ์ž์—ด, '์ฐพ์„ ๋ฌธ์ž์—ด' [, ์ฐพ๊ธฐ ์‹œ์ž‘ํ•  ์œ„์น˜ [, ์ˆœ๋ฒˆ]] )
    ์ง€์ •ํ•œ ์œ„์น˜๋ถ€ํ„ฐ ์ง€์ •ํ•œ ์ˆœ๋ฒˆ์งธ๋กœ ๊ฒ€์ƒ‰๋˜๋Š” ๋ฌธ์ž์˜ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜
  • SUBSTR('๋ฌธ์ž์—ด' | ์ปฌ๋Ÿผ๋ช…, ์ž˜๋ผ๋‚ด๊ธฐ ์‹œ์ž‘ํ•  ์œ„์น˜ [, ์ž˜๋ผ๋‚ผ ๊ธธ์ด])
    ์ปฌ๋Ÿผ์ด๋‚˜ ๋ฌธ์ž์—ด์—์„œ ์ง€์ •ํ•œ ์œ„์น˜๋ถ€ํ„ฐ ์ง€์ •๋œ ๊ธธ์ด๋งŒํผ ๋ฌธ์ž์—ด์„ ์ž˜๋ผ๋‚ด์„œ ๋ฐ˜ํ™˜
    --> ์ž˜๋ผ๋‚ผ ๊ธธ์ด ์ƒ๋žต์‹œ ๋๊นŒ์ง€ ์ž˜๋ผ๋ƒ„
  • TRIM( [์˜ต์…˜ '๋ฌธ์ž์—ด' | ์ปฌ๋Ÿผ๋ช… FROM ] '๋ฌธ์ž์—ด' | ์ปฌ๋Ÿผ๋ช… )
    ์ฃผ์–ด์ง„ ์ปฌ๋Ÿผ์ด๋‚˜ ๋ฌธ์ž์—ด์˜ ์•ž, ๋’ค, ์–‘์ชฝ์— ์žˆ๋Š” ์ง€์ •๋œ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐ
    --> ์–‘์ชฝ ๊ณต๋ฐฑ ์ œ๊ฑฐ์— ๋งŽ์ด ์‚ฌ์šฉํ•จ ์˜ต์…˜: LEADING(์•ž์ชฝ), TRAILING(๋’ค์ชฝ), BOTH(์–‘์ชฝ, ๊ธฐ๋ณธ๊ฐ’)


๐Ÿ“š ์ˆซ์ž ๊ด€๋ จ ํ•จ์ˆ˜

  • ABS
    (์ˆซ์ž | ์ปฌ๋Ÿผ๋ช…) : ์ ˆ๋Œ“๊ฐ’
  • MOD(์ˆซ์ž | ์ปฌ๋Ÿผ๋ช…, ์ˆซ์ž | ์ปฌ๋Ÿผ๋ช…) : ๋‚˜๋จธ์ง€ ๊ฐ’ ๋ฐ˜ํ™˜
  • ROUND์ˆซ์ž | ์ปฌ๋Ÿผ๋ช… [, ์†Œ์ˆ˜์  ์œ„์น˜] ) : ๋ฐ˜์˜ฌ๋ฆผ
  • CEIL(์ˆซ์ž | ์ปฌ๋Ÿผ๋ช…) : ์˜ฌ๋ฆผ
  • FLOOR(์ˆซ์ž | ์ปฌ๋Ÿผ๋ช…) : ๋‚ด๋ฆผ
    --> ๋‘˜๋‹ค ์†Œ์ˆ˜์  ์ฒซ์งธ ์ž๋ฆฌ์—์„œ ์˜ฌ๋ฆผ/๋‚ด๋ฆผ ์ฒ˜๋ฆฌ
  • TRUNC(์ˆซ์ž | ์ปฌ๋Ÿผ๋ช…[, ์œ„์น˜]) : ํŠน์ • ์œ„์น˜ ์•„๋ž˜๋ฅผ ์ ˆ์‚ญ


๐Ÿ“š ๋‚ ์งœ(DATE) ๊ด€๋ จ ํ•จ์ˆ˜

  • SYSDATE : ์‹œ์Šคํ…œ์— ํ˜„์žฌ ์‹œ๊ฐ„(๋…„, ์›”, ์ผ, ์‹œ, ๋ถ„, ์ดˆ)์„ ๋ฐ˜ํ™˜
  • SYSTIMESTAMP : SYSDATE + MS ๋‹จ์œ„ ์ถ”๊ฐ€
  • MONTHS_BETWEEN(๋‚ ์งœ, ๋‚ ์งœ) : ๋‘ ๋‚ ์งœ์˜ ๊ฐœ์›” ์ˆ˜ ์ฐจ์ด ๋ฐ˜ํ™˜


๐Ÿ“š || : ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž(๋ฌธ์ž์—ด ์ด์–ด์“ฐ๊ธฐ)

  • EXTRACT : ๋…„, ์›”, ์ผ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜์—ฌ ๋ฆฌํ„ด(๋ฐ˜ํ™˜)
  • EXTRACT(YEAR FROM ๋‚ ์งœ) : ๋…„๋„๋งŒ ์ถ”์ถœ
  • EXTRACT(MONTH FROM ๋‚ ์งœ) : ์›”๋งŒ ์ถ”์ถœ
  • EXTRACT(DAY FROM ๋‚ ์งœ) : ์ผ๋งŒ ์ถ”์ถœ


๐Ÿ“š ํ˜• ๋ณ€ํ™˜ ํ•จ์ˆ˜

  • ๋ฌธ์ž์—ด(CHAR), ์ˆซ์ž(NUMBER), ๋‚ ์งœ(DATE) ๋ผ๋ฆฌ ํ˜•๋ณ€ํ™˜ ๊ฐ€๋Šฅ

๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜

-- TO_CHAR(๋‚ ์งœ, [ํฌ๋งท]) : ๋‚ ์งœํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์žํ˜• ๋ฐ์ดํ„ฐ๋กœ ๋ณ€๊ฒฝ
-- TO_CHAR(๋‚ ์งœ, [ํฌ๋งท]) : ์ˆซ์žํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌธ์žํ˜• ๋ฐ์ดํ„ฐ๋กœ ๋ณ€๊ฒฝ

-- ์ˆซ์ž -> ๋ฌธ์ž ๋ณ€ํ™˜์‹œ ํฌ๋งท ํŒจํ„ด
-- 9 : ์ˆซ์ž ํ•œ์นธ์„ ์˜๋ฏธ, ์—ฌ๋Ÿฌ๊ฐœ ์ž‘์„ฑ ์‹œ ์˜ค๋ฅธ ์ชฝ ์ •๋ ฌ
-- 0 : ์ˆซ์ž ํ•œ์นธ์„ ์˜๋ฏธ, ์—ฌ๋Ÿฌ๊ฐœ ์ž‘์„ฑ ์‹œ ์˜ค๋ฅธ ์ชฝ ์ •๋ ฌ + ๋นˆ์นธ 0 ์ถ”๊ฐ€
-- L : ํ˜„์žฌ DB์— ์„ค์ •๋œ ๋‚˜๋ผ์˜ ํ™”ํ ๊ธฐํ˜ธ

๋‚ ์งœ๋กœ ๋ณ€ํ™˜

-- TO_DATE(๋ฌธ์žํ˜•, [ํฌ๋งท]) : ๋ฌธ์žํ˜• -> ๋‚ ์งœ๋กœ ๋ณ€๊ฒฝ
-- TO_DATE(์ˆซ์žํ˜•, [ํฌ๋งท]) : ์ˆซ์žํ˜• -> ๋‚ ์งœ๋กœ ๋ณ€๊ฒฝ
--> ์ง€์ •๋œ ํฌ๋งท์œผ๋กœ ๋‚ ์งœ๋ฅผ ์ธ์‹ํ•จ.

์ˆซ์ž ํ˜•๋ณ€ํ™˜

-- TO_NUMBER
(๋ฌธ์ž๋ฐ์ดํ„ฐ, [ํฌ๋งท]) : ๋ฌธ์žํ˜• ๋ฐ์ดํ„ฐ๋ฅผ ์ˆซ์ž ๋ฐ์ดํ„ฐ๋กœ ๋ณ€๊ฒฝ



๐Ÿ“š NULL ์ฒ˜๋ฆฌ ํ•จ์ˆ˜

  • NVL(์ปฌ๋Ÿผ๋ช…, ์ปฌ๋Ÿผ๊ฐ’์ด NULL์ผ ๋•Œ ๋ฐ”๊ฟ€ ๊ฐ’) : NULL์ธ ์ปฌ๋Ÿผ๊ฐ’์„ ๋‹ค๋ฅธ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝ

NULL ๊ณผ ์‚ฐ์ˆ  ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•˜๋ฉด ๊ฒฐ๊ณผ๋Š” ๋ฌด์กฐ๊ฑด NULL

  • NVL2(์ปฌ๋Ÿผ๋ช…, ๋ฐ”๊ฟ€๊ฐ’1, ๋ฐ”๊ฟ€๊ฐ’2)
    -- ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ ๊ฐ’์ด ์žˆ์œผ๋ฉด ๋ฐ”๊ฟ€๊ฐ’1๋กœ ๋ณ€๊ฒฝ,
    -- NULL์ด๋ฉด ๋ฐ”๊ฟ€๊ฐ’2 ๋กœ ๋ณ€๊ฒฝ


๐Ÿ“š ์„ ํƒ ํ•จ์ˆ˜

  • ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์•Œ๋งž์€ ๊ฒฐ๊ณผ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Œ
  • DECODE
    (๊ณ„์‚ฐ์‹ | ์ปฌ๋Ÿผ๋ช…, ์กฐ๊ฑด๊ฐ’1, ์„ ํƒ๊ฐ’1, ์กฐ๊ฑด๊ฐ’2, ์„ ํƒ๊ฐ’2 ..., ์•„๋ฌด๊ฒƒ๋„ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๋•Œ)

-- ๋น„๊ตํ•˜๊ณ ์ž ํ•˜๋Š” ๊ฐ’ ๋˜๋Š” ์ปฌ๋Ÿผ์ด ์กฐ๊ฑด์‹๊ณผ ๊ฐ™์œผ๋ฉด ๊ฒฐ๊ณผ ๊ฐ’ ๋ฐ˜ํ™˜

  • CASE ์„ ํƒ ํ•จ์ˆ˜
    WHEN ์กฐ๊ฑด์‹ 1 THEN ๊ฒฐ๊ณผ๊ฐ’ 1
    WHEN ์กฐ๊ฑด์‹ 2 THEN ๊ฒฐ๊ณผ๊ฐ’ 2
    ELSE ๊ฒฐ๊ณผ๊ฐ’
    END

๐Ÿ“š ๊ทธ๋ฃน ํ•จ์ˆ˜

  • ํ•˜๋‚˜ ์ด์ƒ์˜ ํ–‰์„ ๊ทธ๋ฃน์œผ๋กœ ๋ฌถ์–ด ์—ฐ์‚ฐํ•˜์—ฌ ์ดํ•ฉ, ํ‰๊ท  ๋“ฑ์˜
    -- ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ ํ–‰์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜

  • SUM(์ˆซ์ž๊ฐ€ ๊ธฐ๋ก๋œ ์ปฌ๋Ÿผ๋ช…) : ํ•ฉ๊ณ„

  • AVG(์ˆซ์ž๊ฐ€ ๊ธฐ๋ก๋œ ์ปฌ๋Ÿผ๋ช…) : ํ‰๊ท 

  • MIN(์ปฌ๋Ÿผ๋ช…) : ์ตœ์†Œ๊ฐ’

  • MAX(์นผ๋Ÿผ๋ช…) : ์ตœ๋Œ€๊ฐ’

--> ํƒ€์ž… ์ œํ•œ ์—†์Œ : ๋Œ€/์†Œ, ๋‚ ์งœ : ๊ณผ๊ฑฐ/๋ฏธ๋ž˜, ๋ฌธ์ž์—ด : ๋ฌธ์ž ์ˆœ์„œ)

  • COUNT : ํ–‰ ๊ฐœ์ˆ˜๋ฅผ ํ—ค์•„๋ ค์„œ ๋ฆฌํ„ด
  • COUTN(์ปฌ๋Ÿผ๋ช…) : NULL์„ ์ œ์™ธํ•œ ์‹ค์ œ๊ฐ’์ด ๊ธฐ๋ก๋œ ํ–‰ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ด
  • COUNT(*) : NULL์„ ํฌํ•จํ•œ ์ „์ฒด ํ–‰ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ด
  • COUNT([DISTINCT] ์ปฌ๋Ÿผ๋ช…) : ์ค‘๋ณต์„ ์ œ๊ฑฐํ•œ ํ–‰ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•จ

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