dev!n 2023. 7. 31. 10:42

๋‹จ์ผ ํ–‰ ํ•จ์ˆ˜

  • ํ–‰ ๋‹น ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜
  • SELECT, WHERE, ORDER BY์ ˆ์—์„œ ์‚ฌ์šฉ
  • ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
  • ์ค‘์ฒฉ ๊ฐ€๋Šฅ

 

๋ฌธ์ž ํ•จ์ˆ˜

ํ•จ์ˆ˜ ์„ค๋ช…
CHR(65) / ASCII('A') ๋ฌธ์ž / ASCII
LOWER('HELLO WORLD') / UPPER('hello world') ์†Œ๋ฌธ์ž / ๋Œ€๋ฌธ์ž
INITCAP('the quick brown fox') ์ฒซ ๊ธ€์ž๋งŒ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜
LPAD('123', 5, '0') 00123 / RPAD('123', 5, '0') 12300 ์™ผ์ชฝ / ์˜ค๋ฅธ์ชฝ์—์„œ ๋ฌธ์ž์—ด
LTRIM(' hello') / RTRIM('hello ') ์™ผ์ชฝ / ์˜ค๋ฅธ์ชฝ ๊ณต๋ฐฑ ์ œ๊ฑฐ
REPLACE('hello world', 'l', 'z') hezzo worzd ๋ฌธ์ž์—ด ์น˜ํ™˜
SUBSTR('hello world', 2, 5) / SUBSTRB ๋ฌธ์ž์—ด ์ž˜๋ผ๋‚ด๊ธฐ / byte ๊ธฐ์ค€
LENGTH('hello world') / LENGTHB ๋ฌธ์ž์—ด ๊ธธ์ด / byte ๊ธฐ์ค€
INSTR('hello world', 'l') 3 / INSTRB ๋ฌธ์ž์—ด์˜ ์œ„์น˜๋ฅผ ์ฐพ์Œ. ์—†์œผ๋ฉด 0 (>0: ์™ผ์ชฝ๋ถ€ํ„ฐ -1: ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ) / byte ๊ธฐ์ค€

 

 

์ˆซ์ž ํ•จ์ˆ˜

ํ•จ์ˆ˜ ์„ค๋ช…
CEIL(2.3) 3 ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ๊ฐ€์žฅ ์ž‘์€ ์ •์ˆ˜
MOD(10, 3) 10 // 3
POWER(2, 3) ๊ฑฐ๋“ญ์ œ๊ณฑ
ROUND(2.345, 2) 2.35 ๋ฐ˜์˜ฌ๋ฆผ
TRUNC(2.345, 2) 2.34 ๋ฒ„๋ฆผ
SIGN 1 0 -1 ์–‘์ˆ˜ / ์Œ์ˆ˜ ๊ตฌ๋ถ„

 

 

 

๋‚ ์งœ ํ•จ์ˆ˜

ํ•จ์ˆ˜ ์„ค๋ช…
SYSDATE ํ˜„์žฌ ๋‚ ์งœ์™€ ์‹œ๊ฐ„
LAST_DAY('01-JAN-2023') 2023-01-31 ํ•ด๋‹น ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์งœ
MONTHS_BETWEEN('01-JAN-2023', '01-OCT-2022')
3.96774193548387
๋‘ ๊ธฐ๊ฐ„ ์‚ฌ์ด์˜ ๊ฐœ์›” ์ˆ˜
ADD_MONTHS('01-JAN-2023', 3) 2023-04-01 ์›”์ˆ˜ ๋”ํ•˜๊ณ  ๋นผ๊ธฐ
NEXT_DAY('01-JAN-2023', 'FRIDAY') 2023-01-06 ๋‹ค์Œ ์ฒซ ๋ฒˆ์งธ ํ•ด๋‹น ์š”์ผ์˜ ๋‚ ์งœ
TRUNC(date, format) ํฌ๋งท์œผ๋กœ ๋ช…์‹œ๋œ ๋‹จ์œ„๋กœ ์ž˜๋ผ๋‚ธ ๊ฒฐ๊ณผ
ROUND(date, format) ํฌ๋งท์œผ๋กœ ๋ช…์‹œ๋œ ๋‹จ์œ„๋กœ ๋ฐ˜์˜ฌ๋ฆผ(์ •์˜ค)

 

 

 

+ ๋‚ ์งœ ์—ฐ์‚ฐ

์—ฐ์‚ฐ ๊ฒฐ๊ณผ
DATE + NUMBER ๋‚ ์งœ์— ํ•ด๋‹น ์ผ์ˆ˜๋ฅผ ๋”ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋‚ ์งœ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜
DATE - NUMBER ๋‚ ์งœ์— ํ•ด๋‹น ์ผ์ˆ˜๋ฅผ ๋บ€ ๊ฒฐ๊ณผ๋ฅผ ๋‚ ์งœ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜
DATE1 - DATE2 ๋‘ ๋‚ ์งœ ์‚ฌ์ด์˜ ๊ฒฝ๊ณผ ์ผ์ˆ˜๋ฅผ ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜
DATE + NUMBER/24 ๋‚ ์งœ์— ํ•ด๋‹น ์‹œ๊ฐ„์„ ๋”ํ•˜์—ฌ ๋‚ ์งœ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜

 

 

๋ณ€ํ™˜ ํ•จ์ˆ˜

ํ•จ์ˆ˜ ์„ค๋ช…
TO_CHAR(์ˆซ์ž ๋˜๋Š” ๋‚ ์งœ, ํฌ๋งท) ๋ฌธ์ž๋กœ ์น˜ํ™˜
TO_NUMBER(๋ฌธ์ž์—ด) ์ˆซ์ž๋กœ ์น˜ํ™˜
TO_DATE(๋ฌธ์ž์—ด) ๋‚ ์งœ๋กœ ์น˜ํ™˜

 

 

TO_CHAR ์ˆซ์ž ํฌ๋งท

n format format
1000 9,999.99 9G999D99
1234567.890 9,999,999.999 9G999G999D999
3.5 9,999.99 9G999D99
1234 999,999 999G999

 

 

TO_CHAR ๋‚ ์งœ ํฌ๋งท

format format sample
‘YYYYMMDD’ '20230728’
‘YYYY/MM/DD’ ‘2023/07/28’
‘YYYY-MM-DD’ ‘2023-07-28’
‘YYYY/MM/DD HH24MISS’ ‘2023/07/28 054412’
‘YYYY/MM/DD HHMISS AM’ ‘2023/07/28 054434 ์˜ค์ „’
‘YYYY/MM/DD HH24:MI:SS’ ‘2023/07/28 05:45:08’
‘YYYY/MM/DD HH24:MI:SS.SSSSS’ ‘2023/07/28 05:45:50.20750’

 

๊ธฐํƒ€ ํ•จ์ˆ˜

ํ•จ์ˆ˜ ์„ค๋ช…
NVL(์ปฌ๋Ÿผ์ด๋ฆ„, ๋Œ€์ฒด๊ฐ’) Null ์ฒ˜๋ฆฌ ํ•จ์ˆ˜
NVL2(a,b,c) a ≠ null์ธ ๊ฒฝ์šฐ b ๋ฆฌํ„ด, = null์ด๋ฉด c ๋ฆฌํ„ด
DECODE(a, b, c, d) a == b, c ์•„๋‹ˆ๋ฉด d  
DECODE(a,b,c,d,e,f) a == b๋ฉด c, a == d๋ฉด e ์•„๋‹ˆ๋ฉด f ์—ฐ์† ์กฐ๊ฑด๋ฌธ
USERENV('SESSIONTIMEZONE') ํ™˜๊ฒฝ ๊ฐ’
GREATEST(1, 2, 3) / LEAST(1, 2, 3) ์ตœ๋Œ€๊ฐ’ / ์ตœ์†Œ๊ฐ’
UID / USER User ID / User ๋ช…

 

 

์ง‘๊ณ„ ํ•จ์ˆ˜

Aggregate function

  • ์ „์ฒด ์ง‘ํ•ฉ ๋˜๋Š” ๊ทธ๋ฃน์œผ๋กœ ๋ถ„๋ฅ˜๋œ ์ง‘ํ•ฉ์— ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค.
  • GROUP BY ๋กœ ์†Œ๊ทธ๋ฃน๋ณ„ ๊ธฐ์ค€์„ ์ •ํ•˜๊ณ , SELECT ์ ˆ์—์„œ ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • SELECT ์—์„  GROUP BY์—์„œ ์‚ฌ์šฉํ•œ ์†์„ฑ๊ณผ ์ง‘๊ณ„ํ•จ์ˆ˜๋งŒ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • WHERE ์ ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. (์ฐธ๊ณ → ์ ˆ ์ˆ˜ํ–‰ ์ˆœ์„œ)
    • GROUP BY ์ ˆ์—์„  SELECT ์ ˆ๊ณผ ๋‹ฌ๋ฆฌ alias๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    • HAVING ์ ˆ์€ GROUP BY์ ˆ์˜ ๊ธฐ์ค€ ํ•ญ๋ชฉ์ด๋‚˜ ์†Œ๊ทธ๋ฃน์˜ ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ์กฐ๊ฑด์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ˆ˜ํ–‰ ์ˆœ์„œ : GROUP BY ํ–‰ ๋ถ„๋ฅ˜ → aggregate function ๊ทธ๋ฃน์— ์ ์šฉ → HAVING ์กฐ๊ฑด์— ์ผ์น˜ํ•˜๋Š” ํ–‰๋งŒ ์ถœ๋ ฅ
  • ์‚ฌ์šฉ ์‹œ ์ผ๋ฐ˜ ์ปฌ๋Ÿผ์„ select ์ ˆ์— ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. ๋‹จ, group by ์— ๋‚˜์˜จ ์ปฌ๋Ÿผ์€ ๊ฐ€๋Šฅ.
ํ•จ์ˆ˜ ์‚ฌ์šฉ ๋ชฉ์ 
COUNT(*) null์„ ํฌํ•จํ•œ ํ–‰์˜ ์ˆ˜ ์ถœ๋ ฅ
COUNT(ํ‘œํ˜„์‹) ํ‘œํ˜„์‹์˜ ๊ฐ’์ด null์ธ ๊ฒƒ์„ ์ œ์™ธํ•œ ํ–‰์˜ ์ˆ˜ ์ถœ๋ ฅ
SUM([distinct|all]ํ‘œํ˜„์‹) null์„ ์ œ์™ธํ•œ ํ‘œํ˜„์‹ ๊ฐ’์˜ ํ•ฉ๊ณ„ ์ถœ๋ ฅ
AVG([distinct|all]ํ‘œํ˜„์‹) null์„ ์ œ์™ธํ•œ ํ‘œํ˜„์‹ ๊ฐ’์˜ ํ‰๊ท  ์ถœ๋ ฅ(null ์ œ์™ธํ•˜๊ณ  ๋‚˜๋ˆ”)
MAX([distinct|all]ํ‘œํ˜„์‹) ํ‘œํ˜„์‹์˜ ์ตœ๋Œ€๊ฐ’์„ ์ถœ๋ ฅ(๋ฌธ์ž, ๋‚ ์งœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
MIN([distinct|all]ํ‘œํ˜„์‹) ํ‘œํ˜„์‹์˜ ์ตœ์†Œ๊ฐ’์„ ์ถœ๋ ฅ(๋ฌธ์ž, ๋‚ ์งœ๋„ ๊ฐ€๋Šฅ)
STDDEV([distinct|all]ํ‘œํ˜„์‹) ํ‘œํ˜„์‹์˜ ํ‘œ์ค€ํŽธ์ฐจ๋ฅผ ์ถœ๋ ฅ
VARIANCE([distinct|all]ํ‘œํ˜„์‹) ํ‘œํ˜„์‹์˜ ๋ถ„์‚ฐ์„ ์ถœ๋ ฅ
RANK(3000) within GROUP(ORDER BY sal desc) ๊ทธ๋ฃน ๋‚ด์˜ ์ „์ฒด ๊ฐ’์„ ๋Œ€์ƒ์œผ๋กœ ๊ฐ ๊ฐ’์˜ ์ˆœ์œ„๋ฅผ ๊ตฌํ•จ.