โ๏ธ 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) | ๊ทธ๋ฃน ๋ด์ ์ ์ฒด ๊ฐ์ ๋์์ผ๋ก ๊ฐ ๊ฐ์ ์์๋ฅผ ๊ตฌํจ. |