βš™οΈ backend/πŸ›’οΈ database

[Oracle] ν•¨μˆ˜

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) κ·Έλ£Ή λ‚΄μ˜ 전체 값을 λŒ€μƒμœΌλ‘œ 각 κ°’μ˜ μˆœμœ„λ₯Ό ꡬ함.