728x90

๐Ÿ†Ž๋ฌธ์ž ํ•จ์ˆ˜

1. ๋Œ€์†Œ๋ฌธ์ž ๋ณ€ํ™˜ ํ•จ์ˆ˜

SELECT employee_id, last_name
FROM employees
WHERE UPPER(last_name) = 'higgins';

SELECT 'The job id for '||UPPER(last_name)||' is '||LOWER(job_id) AS "EMPLOYEE DETAILS"
FROM employees;

 

2. ๋ฌธ์ž ์กฐ์ž‘ ํ•จ์ˆ˜

SELECT employee_id, CONCAT(first_name, last_name) NAME, 
job_id, LENGTH(last_name), INSTR(last_name, 'a') "Contains 'a'?"
FROM employees
WHERE SUBSTR(job_id, -1, 1) = 'n';

 

๐Ÿ”ข์ˆซ์ž ํ•จ์ˆ˜

round(ab.cde, 2)-> ์†Œ์ˆ˜์  ์…‹์งธ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ ab.cd
round(ab.cde, 0)-> ์†Œ์ˆ˜์  ์ฒซ์งธ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ ab
round(ab.cde, -1) ->์ผ์˜์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผ a0

trunc(ab.cde, 2) -> ์†Œ์ˆ˜์  ์…‹์งธ์ž๋ฆฌ์—์„œ ๋ฒ„๋ฆผ ab.cd
trunc(ab.cde) -> ์†Œ์ˆ˜์  ์ฒซ์งธ์ž๋ฆฌ์—์„œ ๋ฒ„๋ฆผ ab
trunc((ab.cde, -1) -> ์ผ์˜ ์ž๋ฆฌ์—์„œ ๋ฒ„๋ฆผ a0

mod(salary, 5000) -> salary๋ฅผ 5000์œผ๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€

 

๐Ÿ”œ๋‚ ์งœ ํ•จ์ˆ˜

- ์˜ค๋ผํด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ๋‚ด๋ถ€ ์ˆซ์ž ํ˜•์‹(์„ธ๊ธฐ-๋…„-์›”-์ผ-์‹œ-๋ถ„-์ดˆ)์œผ๋กœ ๋‚ ์งœ ์ €์žฅ
- ๊ธฐ๋ณธ ๋‚ ์งœ ํ‘œ์‹œ ๋ฐ ์ž…๋ ฅ ํ˜•์‹์€ DD-MON-RR

 

1. ๋‚ ์งœ ์—ฐ์‚ฐ

SELECT last_name, (SYSDATE-hire_date)/7 AS WEEKS
FROM employees
WHERE department_id = 90;

 

2. ๋‚ ์งœ ์กฐ์ž‘ ํ•จ์ˆ˜

ํ•จ์ˆ˜ ๊ฒฐ๊ณผ
MONTHS_BETWEEN (A, B) ๋‘ ๋‚ ์งœ ๊ฐ„์˜ ์›” ์ˆ˜
ADD_MONTHS (A, B) ๋‚ ์งœ์— ์›” ์ถ”๊ฐ€
NEXT_DAY (๋‚ ์งœ, ์š”์ผ) ์ง€์ •๋œ ๋‚ ์งœ ๋‹ค์Œ์œผ๋กœ ์ฒ˜์Œ ๋งŒ๋‚˜๋Š” ์š”์ผ
LAST_DAY (๋‚ ์งœ) ์›”์˜ ๋งˆ์ง€๋ง‰ ๋‚ 
ROUND(A, B) ๋‚ ์งœ ๋ฐ˜์˜ฌ๋ฆผ
TRUNC(A, B) ๋‚ ์งœ ๋‚ด๋ฆผ
SELECT employee_id, hire_date, MONTHS_BETWEEN (SYSDATE, hire_date) "TENURE", 
ADD_MONTHS(hire_date, 6) "REVIEW",
NEXT_DAY(hire_date, '๊ธˆ์š”์ผ'), LAST_DAY(hire_date)
FROM employees
WHERE MONTHS_BETWEEN (SYSDATE, hire_date) < 200;
ํ•จ์ˆ˜ ๊ฒฐ๊ณผ
SYSDATE = 03/07/25๋ผ๊ณ  ๊ฐ€์ •
ROUND(SYSDATE, 'MONTH') 03/08/01
ROUND(SYSDATE, 'YEAR')  04/01/01
TRUNC(SYSDATE, 'MONTH') 03/07/01
TRUNC(SYSDATE, 'YEAR') 03/01/01

 

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

1. ์•”์‹œ์  ๋ฐ์ดํ„ฐ ์œ ํ˜• ๋ณ€ํ™˜

: ์˜ค๋ผํด ์„œ๋ฒ„๋Š” ํ‘œํ˜„์‹์—์„œ ์ž๋™์œผ๋กœ(์•”์‹œ์ ์œผ๋กœ) ๋ณ€ํ™˜ ๊ฐ€๋Šฅ

์†Œ์Šค ๋Œ€์ƒ
VARCHAR2/CHAR NUMBER
VARCHAR2/CHAR DATE
NUMBER VARCHAR2/CHAR
DATE VARCHAR2/CHAR


2. ๋ช…์‹œ์  ๋ฐ์ดํ„ฐ ์œ ํ˜• ๋ณ€ํ™˜

1) ๋‚ ์งœ์— TO_CHARํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ

 TO_CHAR(date, 'format_model')
* format model ํ˜•์‹๋ชจ๋ธ :

์ž‘์€ ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ๊ณ , ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„
์‰ผํ‘œ๋กœ ๋‚ ์งœ ๊ฐ’์„ ํ˜•์‹๋ชจ๋ธ๊ณผ ๊ตฌ๋ถ„
์ž„์˜์˜ ์œ ํšจํ•œ ๋‚ ์งœ ํ˜•์‹ ์š”์†Œ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Œ.
์ฑ„์›Œ์ง„ ๊ณต๋ฐฑ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜, ์„ ํ–‰0์„ ์ œ๊ฑฐํ•˜๋ ค๋ฉด ์ฑ„์šฐ๊ธฐ๋ชจ๋“œ fm์‚ฌ์šฉ(fm ๋ถ™์ง€์•Š์œผ๋ฉด ๋นˆ์ž๋ฆฌ์— 0์ด ๋ถ™๊ณ , ๋ถ™์œผ๋ฉด 0์—†์ด ์ˆซ์ž๋งŒ ๋‚˜์˜ด)

* ์‹œ๊ฐ„์š”์†Œ๋Š” ๋‚ ์งœ์—์„œ ์‹œ๊ฐ„ ๋ถ€๋ถ„์˜ ํ˜•์‹์ง€์ • (HH24:MI:SS AM -> 15:45:32 PM)
* ๋ฌธ์ž์—ด์€ ํฐ ๋”ฐ์˜ดํ‘œ๋กœ ๋ฌถ์–ด ์ถ”๊ฐ€ (DD "of" MONTH -> 12 of OCTOBER)
* ์ˆซ์ž ์ ‘๋ฏธ์–ด๋Š” ์ˆซ์ž๋ฅผ ์˜์–ด์ฒ ์ฐจ๋กœ ํ‘œ๊ธฐ (ddspth -> fourteenth)

SELECT last_name, TO_CHAR(hire_date, 'fmDdspth "of" Month YYYY fmHH:MI:SS AM') HIREDATE
FROM employees;

2) ์ˆซ์ž์— TO_CHARํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ

: ์ˆซ์ž๋ฅผ ๋ฌธ์ž๋ฐ์ดํ„ฐ ์œ ํ˜•์œผ๋กœ ๋ณ€ํ™˜

TO_CHAR(number, 'format_model')

3) TO_NUMBER ๋ฐ TO_DATEํ•จ์ˆ˜ ์‚ฌ์šฉ

TO_NUMBER(char[, 'format_model'])
TO_DATE(char[, 'format model]')

* fx ์ˆ˜์ •์ž : (fix) ๋ชจ์–‘์ƒˆ๋ฅผ ๋˜‘๊ฐ™์ด ๋งŒ๋“ค์–ด์•ผํ•จ. TO_DATE ํ•จ์ˆ˜์˜ ๋ฌธ์ž ์ธ์ˆ˜ ๋ฐ ๋‚ ์งœ ํ˜•์‹ ๋ชจ๋ธ์— ๋Œ€ํ•ด ์ •ํ™•ํ•œ ์ผ์น˜๋ฅผ ์ง€์ •

SELECT last_name, hire_date
FROM employees
WHERE hire_date = TO_DATE('5์›”  11, 2004', '**fx**Month DD, YYYY'); // ์˜ค๋ฅ˜ ๋ฐœ์ƒ. ๊ณต๋ฐฑ ๋‘์นธ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ผ์น˜ํ•˜์ง€ ์•Š์Œ

 

โ™Œ์ผ๋ฐ˜ ํ•จ์ˆ˜

ํ•จ์ˆ˜ ์„ค๋ช…
NVL(number_column, expr2)
NVL(date_column, '95/01/01')
NVL(character_column, 'Unavailable')
null๊ฐ’์„ expr2 ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜
NVL2(expr1, expr2, expr3) expr1์ด null์ด ์•„๋‹ˆ๋ฉด expr2๋ฐ˜ํ™˜, null์ด๋ฉด expr3 ๋ฐ˜ํ™˜
NULLIF(expr1, expr2) expr1=expr2 ๊ฐ™์œผ๋ฉด null๋ฐ˜ํ™˜, ๋‹ค๋ฅด๋ฉด expr1๋ฐ˜ํ™˜(expr1๊ฐ’์—๋Š” null์ง€์ •ํ•  ์ˆ˜ ์—†์Œ)
COALESCE(expr1, expr2, ...exprn) null์ด ์•„๋‹Œ ๊ฒฝ์šฐ์— ํ•ด๋‹น ํ‘œํ˜„์‹ ๋ฐ˜ํ™˜.
(expr1์ด null์ด๋ฉด expr2ํ™•์ธ, expr2 null์ด ์•„๋‹ˆ๋ฉด expr2 ๋ฐ˜ํ™˜)
* ๋ฐ์ดํ„ฐ ์œ ํ˜•์€ ๋ฐ˜๋“œ์‹œ ์ผ์น˜ํ•ด์•ผ ํ•จ.
SELECT last_name, salary, commission_pct, COALESCE((salary+(commission_pct\*salary)), salary+2000, salary) "New Salary"
FROM employees;

๐Ÿ‘€ ์กฐ๊ฑด๋ถ€ ํ‘œํ˜„์‹ (IF-THEN-ELSE๋…ผ๋ฆฌ)

- CASE์‹ 

SELECT last_name, job_id, salary, 
		CASE job_id WHEN 'IT_PROG'	THEN 1.10*salary
        	WHEN 'ST_CLERK'			THEN 1.15*salary 
            	WHEN 'SA_REP'			THEN 1.20*salary
            	ELSE salary END "Revised_Salary"
FROM employees;

- DECODE ํ•จ์ˆ˜

SELECT last_name, salary
		DECODE (TRUNC(salary/2000, 0), 
        		0, 0.00,
                        1, 0.09,
                        2, 0.20,
                        3, 0.30,
                           0.45) TAX_RATE
FROM employees
WHERE department_id = 80;
728x90

BELATED ARTICLES

more