๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ๋ฐฐ์šฐ๊ณ  ์ตํžˆ๊ธฐ +/ORACLE

(39)[oracle]4์ผ์ฐจ: ORDER BY ์ ˆ, ASC, DESC/ CONCAT(), SUBSTR(), REVERSE(), LPAD(), RPAD(), LTRIN(), TRTIM(), TRANSLATE(), REPLACE(), ROUND(), TRUNC(), MOB(), POWER(), SQRT(),

by ์ข…์ด๋นจ๋Œ€ 2023. 10. 20.
TOP

๋ชฉ์ฐจ

    1. 23.10.20(๊ธˆ)

    1. 20231020_01_scott.sql

    SELECT USER
    FROM DUAL;
    --==>> SCOTT
    
    --โ—‹ ๋ฐ์ดํ„ฐ ์ˆ˜์ • ์ „
    SELECT *
    FROM TBL_DEPT;
    /*
    10	ACCOUNTING	NEW YORK
    20	RESEARCH	DALLAS
    30	SALES	CHICAGO
    40	OPERATIONS	BOSTON
    50	๊ฐœ๋ฐœ๋ถ€	์„œ์šธ
    */
    
    --โ—‹ ๋ฐ์ดํ„ฐ ์ˆ˜์ •(UPDATE -> TBL_DEPT)
    UPDATE TBL_DEPT
    SET DNAME = '์—ฐ๊ตฌ๋ถ€', LOC = 'RUDRL'
    WHERE DEPTNO = 50;
    --==>>1 ํ–‰ ์ด(๊ฐ€) ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    --โ—‹ ๋ฐ์ดํ„ฐ ์ˆ˜์ • ํ›„
    SELECT *
    FROM TBL_DEPT;
    /*
    10	ACCOUNTING	NEW YORK
    20	RESEARCH	DALLAS
    30	SALES	CHICAGO
    40	OPERATIONS	BOSTON
    50	์—ฐ๊ตฌ๋ถ€	RUDRL
    */
    
    --โ—‹ ๋กค๋ฐฑ
    ROLLBACK;
    
    --โ—‹ ์ปค๋ฐ‹์„ ์•ˆํ•ด์„œ ์ˆ˜์ •์ „์œผ๋กœ ๋Œ์•„๊ฐ
    SELECT *
    FROM TBL_DEPT;
    /*
    10	ACCOUNTING	NEW YORK
    20	RESEARCH	DALLAS
    30	SALES	CHICAGO
    40	OPERATIONS	BOSTON
    50	๊ฐœ๋ฐœ๋ถ€	์„œ์šธ
    */
    
    --โ—‹ ๋ฐ์ดํ„ฐ ์ˆ˜์ •
    UPDATE TBL_DEPT
    SET DNAME = '์—ฐ๊ตฌ๋ถ€', LOC = '์ธ์ฒœ'
    WHERE DEPTNO = 50;
    --==>> 1 ํ–‰ ์ด(๊ฐ€) ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    --โ—‹ ๋ฐ์ดํ„ฐ ์ˆ˜์ • ํ™•์ธ
    SELECT *
    FROM TBL_DEPT;
    /*
    10	ACCOUNTING	NEW YORK
    20	RESEARCH	DALLAS
    30	SALES	CHICAGO
    40	OPERATIONS	BOSTON
    50	์—ฐ๊ตฌ๋ถ€	์ธ์ฒœ
    */
    
    --โ—‹ ์ปค๋ฐ‹
    COMMIT;
    --==>> ์ปค๋ฐ‹ ์™„๋ฃŒ.
    
    --โ—‹ ๋กค๋ฐฑ
    ROLLBACK;
    --==>> ๋กค๋ฐฑ ์™„๋ฃŒ.
    
    --โ—‹ ์ปค๋ฐ‹ํ•ด์„œ ๋กค๋ฐฑํ•ด๋„ ์ด์ „ ๋ฐ์ดํ„ฐ๋กœ ๋Œ์•„๊ฐ€์ง€ ์•Š์Œ
    SELECT *
    FROM TBL_DEPT;
    /*
    10	ACCOUNTING	NEW YORK
    20	RESEARCH	DALLAS
    30	SALES	CHICAGO
    40	OPERATIONS	BOSTON
    50	์—ฐ๊ตฌ๋ถ€	์ธ์ฒœ
    */
    
    --โ—‹ ๋ฐ์ดํ„ฐ ์‚ญ์ œ(DELETE -> TBL_DEPT)
    DELETE TBL_DEPT
    WHERE DEPTNO = 50;
    --** ๋ฐ”๋กœ ์‚ญ์ œํ•˜์ง€ ์•Š๋Š”๋‹ค!
     
    --โ—‹ ์‚ญ์ œํ•  ๋‚ด์šฉ ์กฐํšŒ
    SELECT *
    FROM TBL_DEPT
    WHERE DEPTNO = 50;
    --==>> 50	์—ฐ๊ตฌ๋ถ€	์ธ์ฒœ
    
    --โ—‹ ์กฐํšŒ ํ›„ ์‚ญ์ œ
    DELETE TBL_DEPT
    WHERE DEPTNO = 50;
    --==>> 1 ํ–‰ ์ด(๊ฐ€) ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    --โ—‹ ์‚ญ์ œ ํ›„ ์กฐํšŒ
    SELECT *
    FROM TBL_DEPT;
    /*
    10	ACCOUNTING	NEW YORK
    20	RESEARCH	DALLAS
    30	SALES	CHICAGO
    40	OPERATIONS	BOSTON
    */
    
    --โ—‹ ์ปค๋ฐ‹
    COMMIT;
    --==>> ์ปค๋ฐ‹ ์™„๋ฃŒ.
    
    --------------------------------------------------------------------------------
    
    --โ– โ– โ–  ORDER BY ์ ˆ โ– โ– โ– --
    --** ์–ด๋–ค ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ €๋‚˜์˜ค๊ณ  ๋‚˜์ค‘์— ๋‚˜์˜ค๊ณ ๋Š” ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” ํฌ๊ฒŒ ์—ฐ๊ด€์ด ์—†์Œ
    --** ๋ณด๊ธฐ ์ข‹์œผ๋ ค๊ณ  ์ •๋ ฌํ•˜๋ฉด ์•ˆ๋œ๋‹ค -> ๋ถ€ํ•˜๊ฐ€ ๋งŽ์ด ๊ฑธ๋ฆผ
    
    -- FROM - WHERE - GROUP BY - HAVING - SELECT - ORDER BY
    
    SELECT ENAME "์‚ฌ์›๋ช…", DEPTNO "๋ถ€์„œ๋ฒˆํ˜ธ", JOB "์ง์ข…", SAL "๊ธ‰์—ฌ" 
            , SAL * 12 + NVL(COMM, 0) "์—ฐ๋ด‰"
    FROM EMP;
    --==>>
    /*
    SMITH	20	CLERK	800	9600
    ALLEN	30	SALESMAN	1600	19500
    WARD	30	SALESMAN	1250	15500
    JONES	20	MANAGER	2975	35700
    MARTIN	30	SALESMAN	1250	16400
    BLAKE	30	MANAGER	2850	34200
    CLARK	10	MANAGER	2450	29400
    SCOTT	20	ANALYST	3000	36000
    KING	10	PRESIDENT	5000	60000
    TURNER	30	SALESMAN	1500	18000
    ADAMS	20	CLERK	1100	13200
    JAMES	30	CLERK	950	11400
    FORD	20	ANALYST	3000	36000
    MILLER	10	CLERK	1300	15600
    */
    
    SELECT ENAME "์‚ฌ์›๋ช…", DEPTNO "๋ถ€์„œ๋ฒˆํ˜ธ", JOB "์ง์ข…", SAL "๊ธ‰์—ฌ" 
            , SAL * 12 + NVL(COMM, 0) "์—ฐ๋ด‰"
    FROM EMP
    ORDER BY DEPTNO ASC;    -- DEPTNO -> ์ •๋ ฌ ๊ธฐ์ค€ : ๋ถ€์„œ๋ฒˆํ˜ธ
                            -- ASC    -> ์ •๋ ฌ ์œ ํ˜• : ์˜ค๋ฆ„์ฐจ์ˆœ(์ƒ๋žต๊ฐ€๋Šฅ)
                            -- DESC   -> ์ •๋ ฌ ์œ ํ˜• : ๋‚ด๋ฆผ์ฐจ์ˆœ
    /*
    CLARK	10	MANAGER	2450	29400
    KING	10	PRESIDENT	5000	60000
    MILLER	10	CLERK	1300	15600
    JONES	20	MANAGER	2975	35700
    FORD	20	ANALYST	3000	36000
    ADAMS	20	CLERK	1100	13200
    SMITH	20	CLERK	800	9600
    SCOTT	20	ANALYST	3000	36000
    WARD	30	SALESMAN	1250	15500
    TURNER	30	SALESMAN	1500	18000
    ALLEN	30	SALESMAN	1600	19500
    JAMES	30	CLERK	950	11400
    BLAKE	30	MANAGER	2850	34200
    MARTIN	30	SALESMAN	1250	16400
    */
    
    SELECT ENAME "์‚ฌ์›๋ช…", DEPTNO "๋ถ€์„œ๋ฒˆํ˜ธ", JOB "์ง์ข…", SAL "๊ธ‰์—ฌ" 
            , SAL * 12 + NVL(COMM, 0) "์—ฐ๋ด‰"
    FROM EMP
    ORDER BY DEPTNO;        -- DEPTNO -> ์ •๋ ฌ ๊ธฐ์ค€ : ๋ถ€์„œ๋ฒˆํ˜ธ
                            -- ASC    -> ์ •๋ ฌ ์œ ํ˜• : ์˜ค๋ฆ„์ฐจ์ˆœ -> ์ƒ๋žต๊ฐ€๋Šฅ ~!!!
    /*
    CLARK	10	MANAGER	2450	29400
    KING	10	PRESIDENT	5000	60000
    MILLER	10	CLERK	1300	15600
    JONES	20	MANAGER	2975	35700
    FORD	20	ANALYST	3000	36000
    ADAMS	20	CLERK	1100	13200
    SMITH	20	CLERK	800	9600
    SCOTT	20	ANALYST	3000	36000
    WARD	30	SALESMAN	1250	15500
    TURNER	30	SALESMAN	1500	18000
    ALLEN	30	SALESMAN	1600	19500
    JAMES	30	CLERK	950	11400
    BLAKE	30	MANAGER	2850	34200
    MARTIN	30	SALESMAN	1250	16400
    */
    
    SELECT ENAME "์‚ฌ์›๋ช…", DEPTNO "๋ถ€์„œ๋ฒˆํ˜ธ", JOB "์ง์ข…", SAL "๊ธ‰์—ฌ" 
            , SAL * 12 + NVL(COMM, 0) "์—ฐ๋ด‰"
    FROM EMP
    ORDER BY DEPTNO DESC;   -- DEPTNO -> ์ •๋ ฌ ๊ธฐ์ค€ : ๋ถ€์„œ๋ฒˆํ˜ธ
                            -- DESC   -> ์ •๋ ฌ ์œ ํ˜• : ๋‚ด๋ฆผ์ฐจ์ˆœ
    /*
    BLAKE	30	MANAGER	    2850	34200
    TURNER	30	SALESMAN	1500	18000
    ALLEN	30	SALESMAN	1600	19500
    MARTIN	30	SALESMAN	1250	16400
    WARD	30	SALESMAN	1250	15500
    JAMES	30	CLERK	    950	    11400
    SCOTT	20	ANALYST	    3000	36000
    JONES	20	MANAGER	    2975	35700
    SMITH	20	CLERK	    800	    9600
    ADAMS	20	CLERK	    1100	13200
    FORD	20	ANALYST	    3000	36000
    KING	10	PRESIDENT	5000	60000
    MILLER	10	CLERK	    1300	15600
    CLARK	10	MANAGER	    2450	29400
    */
    
    SELECT ENAME "์‚ฌ์›๋ช…", DEPTNO "๋ถ€์„œ๋ฒˆํ˜ธ", JOB "์ง์ข…", SAL "๊ธ‰์—ฌ" 
            , SAL * 12 + NVL(COMM, 0) "์—ฐ๋ด‰"
    FROM EMP
    ORDER BY ์—ฐ๋ด‰ DESC;
    --** FROM - WHERE - GRUOP BY - HAVING - SELECT - ORDER BY
    --** '์—ฐ๋ด‰'์ด๋ผ๋Š” ๋ณ„์นญ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ๊ฐ€๋Šฅ -> SELECT ๊ฐ€ ORDER BY๋ณด๋‹ค ์•ž์— ์žˆ์–ด์„œ
    /*
    KING	10	PRESIDENT	5000	60000
    FORD	20	ANALYST	    3000	36000
    SCOTT	20	ANALYST	    3000	36000
    JONES	20	MANAGER	    2975	35700
    BLAKE	30	MANAGER	    2850	34200
    CLARK	10	MANAGER	    2450	29400
    ALLEN	30	SALESMAN	1600	19500
    TURNER	30	SALESMAN	1500	18000
    MARTIN	30	SALESMAN	1250	16400
    MILLER	10	CLERK	    1300	15600
    WARD	30	SALESMAN	1250	15500
    ADAMS	20	CLERK	    1100	13200
    JAMES	30	CLERK	    950	    11400
    SMITH	20	CLERK	    800	    9600
    */
    
    SELECT ENAME "์‚ฌ์›๋ช…", DEPTNO "๋ถ€์„œ๋ฒˆํ˜ธ", JOB "์ง์ข…", SAL "๊ธ‰์—ฌ" 
            , SAL * 12 + NVL(COMM, 0) "์—ฐ๋ด‰"
    FROM EMP
    ORDER BY 2; -- ๋ถ€์„œ๋ฒˆํ˜ธ ์˜ค๋ฆ„์ฐจ์ˆœ
    --> EMP ํ…Œ์ด๋ธ”์ด ๊ฐ–๊ณ ์žˆ๋Š” ๊ณ ์œ ํ•œ ์ปฌ๋Ÿผ ์ˆœ์„œ(2->ENAME)๊ฐ€ ์•„๋‹ˆ๋ผ
    --  SELECT ์ฒ˜๋ฆฌ ๋˜๋Š” ๋‘ ๋ฒˆ์งธ ์ปฌ๋Ÿผ(2->DEPTNO, ๋ถ€์„œ๋ฒˆํ˜ธ)์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ
    --  ASC๋Š” ์ƒ๋žต๋œ ์ƒํƒœ -> ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
    --  ์˜ค๋ผํด์—์„œ ๊ธฐ๋ณธ ์ธ๋ฑ์Šค๋Š” ์ž๋ฐ”์™€ ๋‹ฌ๋ฆฌ 1๋ถ€ํ„ฐ ์‹œ์ž‘
    --  ์ตœ์ข…์ ์œผ๋กœ... ํ˜„์žฌ <ORDER BY 2>๊ตฌ๋ฌธ์€ -> <ORDER BY DEPTNO ASC>์ด๋‹ค.
    
    --** 2 -> EMP ์˜ ๋‘๋ฒˆ์งธ๊ฐ€ ์•„๋‹ˆ๋ผ, SELECT์˜ ๋‘๋ฒˆ์งธ์— ํ•ด๋‹น
    --** 2 -> JAVA๋Š” 0๋ฒˆ๋ถ€ํ„ฐ ๋ถ€์—ฌํ–ˆ์ง€๋งŒ, ORACLE์€ 1๋ฒˆ๋ถ€ํ„ฐ ๋ถ€์—ฌ๋จ
    
    /*
    CLARK	10	MANAGER	    2450	29400
    KING	10	PRESIDENT	5000	60000
    MILLER	10	CLERK	    1300	15600
    JONES	20	MANAGER	    2975	35700
    FORD	20	ANALYST	    3000	36000
    ADAMS	20	CLERK	    1100	13200
    SMITH	20	CLERK	    800	    9600
    SCOTT	20	ANALYST	    3000	36000
    WARD	30	SALESMAN	1250	15500
    TURNER	30	SALESMAN	1500	18000
    ALLEN	30	SALESMAN	1600	19500
    JAMES	30	CLERK	    950	    11400
    BLAKE	30	MANAGER	    2850	34200
    MARTIN	30	SALESMAN	1250	16400
    */
    
    SELECT ENAME "์‚ฌ์›๋ช…", DEPTNO "๋ถ€์„œ๋ฒˆํ˜ธ", JOB "์ง์ข…", SAL "๊ธ‰์—ฌ" 
            , SAL * 12 + NVL(COMM, 0) "์—ฐ๋ด‰"
    FROM EMP
    ORDER BY 2, 4;
    -- ๋ถ€์„œ๋ฒˆํ˜ธ, ๊ธ‰์—ฌ ๊ธฐ์ค€ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
    -- (1์ฐจ)     (2์ฐจ)
    --==>>
    /*
    MILLER	10	CLERK	    1300	15600
    CLARK	10	MANAGER	    2450	29400
    KING	10	PRESIDENT	5000	60000
    SMITH	20	CLERK	    800	    9600
    ADAMS	20	CLERK	    1100	13200
    JONES	20	MANAGER	    2975	35700
    SCOTT	20	ANALYST	    3000	36000
    FORD	20	ANALYST	    3000	36000
    JAMES	30	CLERK	    950	    11400
    MARTIN	30	SALESMAN	1250	16400
    WARD	30	SALESMAN	1250	15500
    TURNER	30	SALESMAN	1500	18000
    ALLEN	30	SALESMAN	1600	19500
    BLAKE	30	MANAGER	    2850	34200
    */
    
    SELECT ENAME, DEPTNO, JOB, SAL
    FROM EMP
    ORDER BY 2, 3, 4 DESC;
    --**    -----  --
    --** ์˜ค๋ฆ„์ฐจ์ˆœ  ๋‚ด๋ฆผ์ฐจ์ˆœ
    --โ‘  2      -> DEPTNO(๋ถ€์„œ๋ฒˆํ˜ธ) ๊ธฐ์ค€ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ 
    --โ‘ก 3      -> JOB(์ง์ข…)        ๊ธฐ์ค€ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
    --โ‘ข 4 DESC -> SAL(๊ธ‰์—ฌ)        ๊ธฐ์ค€ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ
    
    --------------------------------------------------------------------------------
    
    --โ—‹ CONCAT() : ๋ฌธ์ž์—ด ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฐ์ดํ„ฐ ๊ฒฐํ•ฉ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํ•จ์ˆ˜
    --              ์˜ค๋กœ์ง€ 2๊ฐœ์˜ ๋ฌธ์ž์—ด๋งŒ ๊ฒฐํ•ฉ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
    SELECT ENAME || JOB "COL1"
        ,CONCAT(ENAME, JOB) "COL2"
    FROM EMP;
    /*
    SMITHCLERK	SMITHCLERK
    ALLENSALESMAN	ALLENSALESMAN
    WARDSALESMAN	WARDSALESMAN
    JONESMANAGER	JONESMANAGER
    MARTINSALESMAN	MARTINSALESMAN
    BLAKEMANAGER	BLAKEMANAGER
    CLARKMANAGER	CLARKMANAGER
    SCOTTANALYST	SCOTTANALYST
    KINGPRESIDENT	KINGPRESIDENT
    TURNERSALESMAN	TURNERSALESMAN
    ADAMSCLERK	ADAMSCLERK
    JAMESCLERK	JAMESCLERK
    FORDANALYST	FORDANALYST
    MILLERCLERK	MILLERCLERK
    */
    
    SELECT '์„œ๋กœ' || '๋ฐฐ๋ คํ•˜๋ฉฐ' || '์ง€๋‚ด์ž' "COL1"
        , CONCAT('์„œ๋กœ','๋ฐฐ๋ คํ•˜๋ฉฐ','์ง€๋‚ด์ž') "COL2"
    FROM DUAL;
    --==>> ์—๋Ÿฌ๋ฐœ์ƒ (ORA-00909: invalid number of arguments)
    
    /* 1-๋ฌธ์ œ & ํ•จ๊ป˜ํ‘ผ๋‚ด์šฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
    -- ์‚ฌ์›๋ช…, ์ง์ข…๋ช…, ๋ถ€์„œ๋ฒˆํ˜ธ
    DESC EMP;
    
    SELECT ENAME || JOB || EMPNO
        ,CONCAT(ENAME,CONCAT(JOB, EMPNO))
    FROM EMP;
    --==>>
    /*
    SMITHCLERK7369	SMITHCLERK7369
    ALLENSALESMAN7499	ALLENSALESMAN7499
    WARDSALESMAN7521	WARDSALESMAN7521
    JONESMANAGER7566	JONESMANAGER7566
    MARTINSALESMAN7654	MARTINSALESMAN7654
    BLAKEMANAGER7698	BLAKEMANAGER7698
    CLARKMANAGER7782	CLARKMANAGER7782
    SCOTTANALYST7788	SCOTTANALYST7788
    KINGPRESIDENT7839	KINGPRESIDENT7839
    TURNERSALESMAN7844	TURNERSALESMAN7844
    ADAMSCLERK7876	ADAMSCLERK7876
    JAMESCLERK7900	JAMESCLERK7900
    FORDANALYST7902	FORDANALYST7902
    MILLERCLERK7934	MILLERCLERK7934
    */
    --> ๋‚ด๋ถ€์ ์œผ๋กœ ํ˜• ๋ณ€ํ™˜์ด ์ผ์–ด๋‚˜๋ฉฐ ๊ฒฐํ•ฉ์„ ์ˆ˜ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.
    --  CONCAT() ์€ ๋ฌธ์ž์—ด๊ณผ ๋ฌธ์ž์—ด์„ ๊ฒฐํ•ฉ์‹œ์ผœ์ฃผ๋Š” ํ•จ์ˆ˜์ด์ง€๋งŒ
    --  ๋‚ด๋ถ€์ ์œผ๋กœ ์ˆซ์ž๋‚˜ ๋‚ ์งœ๋ฅผ ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ๊ณผ์ •์ด ํฌํ•จ๋˜์–ด ์žˆ๋‹ค.
    
    --โ—‹ SUBSTR()
    /*
    obj.substring()
    ----
    ๋ฌธ์ž์—ด -> ๋ฌธ์ž์—ด.substring(n, m)
                              ------
                              ๋ฌธ์ž์—ด์˜ n ๋ถ€ํ„ฐ n-1 ๊นŒ์ง€... (์ธ๋ฑ์Šค๋Š” 0 ๋ถ€ํ„ฐ)
    */
    
    --โ—‹ SUBSTR() ๊ฐฏ์ˆ˜ ๊ธฐ๋ฐ˜ / SUBSTRB() ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜
    --** ๋ฐ”์ดํŠธ ๊ธฐ๋ฐ˜์ธ ๊ฒฝ์šฐ ์กฐ์‹ฌํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผํ•จ -> UTF-8 ์—์„œ ๋ฌธ์ž๊ฐ€ ๋Š๊ฒจ ์ž˜๋ ค์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ
    SELECT ENAME "COL1"
          ,SUBSTR(ENAME, 1, 2) "COL2"
    FROM EMP;
    --> ๋ฌธ์ž์—ด์„ ์ถ”์ถœํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํ•จ์ˆ˜
    --  ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์€ ๋Œ€์ƒ ๋ฌธ์ž์—ด(์ถ”์ถœ์˜ ๋Œ€์ƒ, TARGET)
    --  ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์€ ์ถ”์ถœ์„ ์‹œ์ž‘ํ•˜๋Š” ์œ„์น˜(์ธ๋ฑ์Šค, START) -> ์ธ๋ฑ์Šค๋Š” 1๋ถ€ํ„ฐ ์‹œ์ž‘...
    --  ์„ธ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์€ ์ถ”์ถœํ•  ๋ฌธ์ž์—ด์˜ ๊ฐฏ์ˆ˜(๊ฐฏ์ˆ˜, COUNT)   -> ์ƒ๋žต์‹œ.. ๋ฌธ์ž์—ด ๊ธธ์ด ๋๊นŒ์ง€...
    --==>>
    /*
    SMITH	SM
    ALLEN	AL
    WARD	WA
    JONES	JO
    MARTIN	MA
    BLAKE	BL
    CLARK	CL
    SCOTT	SC
    KING	KI
    TURNER	TU
    ADAMS	AD
    JAMES	JA
    FORD	FO
    MILLER	MI
    */
    
    SELECT ENAME "COL1"
         , SUBSTR(ENAME, 3, 2) "COL2"
         , SUBSTR(ENAME, 3, 5) "COL3"
         , SUBSTR(ENAME, 3) "COL4"
         , SUBSTR(ENAME, 6, 1) "COL5"
    FROM EMP;
    --==>>
    /*
    SMITH	IT	ITH	    ITH	
    ALLEN	LE	LEN	    LEN	
    WARD	RD	RD	    RD	
    JONES	NE	NES	    NES	
    MARTIN	RT	RTIN	RTIN	N
    BLAKE	AK	AKE	    AKE	
    CLARK	AR	ARK	    ARK	
    SCOTT	OT	OTT	    OTT	
    KING	NG	NG	    NG	
    TURNER	RN	RNER	RNER	R
    ADAMS	AM	AMS	    AMS	
    JAMES	ME	MES	    MES	
    FORD	RD	RD	    RD	
    MILLER	LL	LLER	LLER	R
    */
    
    /* 2-๋ฌธ์ œ & ํ•จ๊ป˜ํ‘ผ๋‚ด์šฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
    --โ—‹ TBL_SQWON ํ…Œ์ด๋ธ”์—์„œ ์„ฑ๋ณ„์ด ๋‚จ์„ฑ์ธ ์‚ฌ์›๋งŒ
    --   ์‚ฌ์›๋ฒˆํ˜ธ, ์‚ฌ์›๋ช…, ์ฃผ๋ฏผ๋ฒˆํ˜ธ, ๊ธ‰์—ฌ ํ•ญ๋ชฉ์„ ์กฐํšŒํ•œ๋‹ค.
    --   ๋‹จ, SUBSTR() ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.
    
    SELECT *
    FROM TBL_SAWON;
    
    SELECT *
    FROM TBL_SAWON
    WHERE SUBSTR(JUBUN,7,1) = 1 OR SUBSTR(JUBUN,7,1) = 3;   --** SUBSTR๋Š” ๋ฌธ์žํƒ€์ž…์œผ๋กœ ๋‚˜์˜ด ์ž๋™ํ˜•๋ณ€ํ™˜๊ทœ์น™์„ ์˜์ง€ํ•œ ๊ฒƒ(๊ถŒ์žฅx)
    
    SELECT *
    FROM TBL_SAWON
    WHERE SUBSTR(JUBUN,7,1) = '1' OR SUBSTR(JUBUN,7,1) = '3'; 
    
    SELECT *
    FROM TBL_SAWON
    WHERE SUBSTR(JUBUN,7,1) IN (1,3);   --** SUBSTR๋Š” ๋ฌธ์žํƒ€์ž…์œผ๋กœ ๋‚˜์˜ด ์ž๋™ํ˜•๋ณ€ํ™˜๊ทœ์น™์„ ์˜์ง€ํ•œ ๊ฒƒ(๊ถŒ์žฅx)
    
    SELECT *
    FROM TBL_SAWON
    WHERE SUBSTR(JUBUN,7,1) IN ('1','3');
    /*
    1001	๊ฐ•ํ˜œ์„ฑ	9710171234567	2005-01-03	3000
    1008	์„ ๋™์—ด	6909101234567	1998-01-10	2000
    1009	์ด์ด๊ฒฝ	0505053234567	2011-05-06	1500
    1011	์ด์œค์ˆ˜	9501061234567	2009-09-19	4000
    1013	๋‚จ์ง„	6511111234567	1999-11-11	2000
    1014	์ด์ฃผํ˜•	9904171234567	2009-11-11	2000
    1015	๋‚จ๊ถ๋ฏผ	0202023234567	2010-10-10	2300
    */
    
    โ—‹ LENGTH() ๊ธ€์ž ์ˆ˜ / LENGTHB() ๋ฐ”์ดํŠธ ์ˆ˜
    SELECT ENAME "COL1"
         , LENGTH(ENAME) "COL2"
         , LENGTHB(ENAME) "COL3"
    FROM EMP;
    /*
    SMITH	5	5
    ALLEN	5	5
    WARD	4	4
    JONES	5	5
    MARTIN	6	6
    BLAKE	5	5
    CLARK	5	5
    SCOTT	5	5
    KING	4	4
    TURNER	6	6
    ADAMS	5	5
    JAMES	5	5
    FORD	4	4
    MILLER	6	6
    */
    
    --โ—‹ INSTR()
    SELECT 'ORACLE ORAHOME BIORA' "COL1"
          , INSTR('ORACLE ORAHOME BIORA', 'ORA', 1, 1) "COL2"   -- 1
          , INSTR('ORACLE ORAHOME BIORA', 'ORA', 1, 2) "COL3"   -- 8
          , INSTR('ORACLE ORAHOME BIORA', 'ORA', 2, 1) "COL4"   -- 8
          , INSTR('ORACLE ORAHOME BIORA', 'ORA', 2)    "COL5"   -- 8
          , INSTR('ORACLE ORAHOME BIORA', 'ORA', 2, 3) "COL6"   -- 0
    FROM DUAL;
    --==>> ORACLE ORAHOME BIORA	1	8	8	8	0
    --> ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž์—ด์—์„œ... (๋Œ€์ƒ ๋ฌธ์ž์—ด, TARGET)
    --  ๋‘ ๋ฒˆ์งธ ํŒŒ๋ฆฌ๋ฏธํ„ฐ ๊ฐ’์„ ํ†ตํ•ด ๋„˜๊ฒจ์ค€ ๋ฌธ์ž์—ด์ด ๋“ฑ์žฅํ•˜๋Š” ์œ„์น˜๋ฅผ ์ฐพ์•„๋ผ~!!!
    --  ์„ธ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์€ ์ฐพ๊ธฐ ์‹œ์ž‘ํ•˜๋Š” (์Šค์บ”์„ ์‹œ์ž‘ํ•˜๋Š”) ์œ„์น˜
    --  ๋„ค ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์€ ๋ช‡ ๋ฒˆ์งธ ๋“ฑ์žฅํ•˜๋Š” ๊ฐ’์„ ์ฐพ์„ ๊ฒƒ์ธ์ง€์— ๋Œ€ํ•œ ์„ค์ • -> (1์ผ ๊ฒฝ์šฐ ์ƒ๋žต ๊ฐ€๋Šฅ)
    
    SELECT '๋‚˜์˜์˜ค๋ผํด ์ง‘์œผ๋กœ์˜ค๋ผ ํ•ฉ๋‹ˆ๋‹ค.' "COL1"
          , INSTR('๋‚˜์˜์˜ค๋ผํด ์ง‘์œผ๋กœ์˜ค๋ผ ํ•ฉ๋‹ˆ๋‹ค.', '์˜ค๋ผ', 1) "COL2"   -- 3
          , INSTR('๋‚˜์˜์˜ค๋ผํด ์ง‘์œผ๋กœ์˜ค๋ผ ํ•ฉ๋‹ˆ๋‹ค.', '์˜ค๋ผ', 2) "COL3"   -- 3
          , INSTR('๋‚˜์˜์˜ค๋ผํด ์ง‘์œผ๋กœ์˜ค๋ผ ํ•ฉ๋‹ˆ๋‹ค.', '์˜ค๋ผ',10) "COL4"   -- 10
          , INSTR('๋‚˜์˜์˜ค๋ผํด ์ง‘์œผ๋กœ์˜ค๋ผ ํ•ฉ๋‹ˆ๋‹ค.', '์˜ค๋ผ',11) "COL5"   -- 0
    FROM DUAL;
    --==>> ๋‚˜์˜์˜ค๋ผํด ์ง‘์œผ๋กœ์˜ค๋ผ ํ•ฉ๋‹ˆ๋‹ค.	3	3	10	0
    --> ๋งˆ์ง€๋ง‰ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์œผ ์ƒ๋žตํ•œ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ -> ๋งˆ์ง€๋ง‰ ํŒŒ๋ผ๋ฏธํ„ฐ -> 1
    
    --โ—‹ REVERSE()
    SELECT 'ORACLE' "COL1"
          , REVERSE('ORACLE') "COL2"
          , REVERSE('์˜ค๋ผํด') "COL3"
    FROM DUAL;
    --==>> ORACLE	ELCARO	???
    -- ๋Œ€์ƒ ๋ฌธ์ž์—ด์„ ๊ฑฐ๊พธ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (๋‹จ, ํ•œ๊ธ€์€ ์ œ์™ธ - ์‚ฌ์šฉ ๋ถˆ๊ฐ€)
    
    --โ—‹ ์‹ค์Šต ํ…Œ์ด๋ธ” ์ƒ์„ฑ(TBL_FILES)
    CREATE TABLE TBL_FILES
    ( FILENO    NUMBER(3)
    , FILENAME  VARCHAR2(100)
    );
    --==>> Table TBL_FILES์ด(๊ฐ€) ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    --โ—‹ ๋ฐ์ดํ„ฐ ์ž…๋ ฅ(TBL_FILES)
    INSERT INTO TBL_FILES VALUES(1, 'C:\AAA\BBB\CCC\SALES.DOC');
    INSERT INTO TBL_FILES VALUES(2, 'C:\AAA\PANMAE.XXLS');
    INSERT INTO TBL_FILES VALUES(3, 'D:\RESEARCH.PPT');
    INSERT INTO TBL_FILES VALUES(4, 'C:\DOCUMENTS\STUDY.HWP');
    INSERT INTO TBL_FILES VALUES(5, 'C:\DOCUMENTS\TEMP\HOMEWORK\SQL.TXT');
    INSERT INTO TBL_FILES VALUES(6, 'C:\SHARE\F\TEST\FLOWER.PNG');
    INSERT INTO TBL_FILES VALUES(7, 'E:\STUDY\ORACLE\20231020_01_SCOTT.SQL');
    --==>> 1 ํ–‰ ์ด(๊ฐ€) ์‚ฝ์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    SELECT *
    FROM TBL_FILES;
    /*
    1	C:\AAA\BBB\CCC\SALES.DOC
    2	C:\AAA\PANMAE.XXLS
    3	D:\RESEARCH.PPT
    4	C:\DOCUMENTS\STUDY.HWP
    5	C:\DOCUMENTS\TEMP\HOMEWORK\SQL.TXT
    6	C:\SHARE\F\TEST\FLOWER.PNG
    7	E:\STUDY\ORACLE\20231020_01_SCOTT.SQL
    */
    
    --โ—‹ ์ปค๋ฐ‹
    COMMIT;
    --==>> ์ปค๋ฐ‹ ์™„๋ฃŒ.
    
    SELECT FILENO "ํŒŒ์ผ๋ฒˆํ˜ธ"
         , FILENAME "ํŒŒ์ผ๋ช…"
    FROM TBL_FILES;
    
    /*
       ํŒŒ์ผ๋ฒˆํ˜ธ ํŒŒ์ผ๋ช…
            1	C:\AAA\BBB\CCC\SALES.DOC
            2	C:\AAA\PANMAE.XXLS
            3	D:\RESEARCH.PPT
            4	C:\DOCUMENTS\STUDY.HWP
            5	C:\DOCUMENTS\TEMP\HOMEWORK\SQL.TXT
            6	C:\SHARE\F\TEST\FLOWER.PNG
            7	E:\STUDY\ORACLE\20231020_01_SCOTT.SQL
    */
    
    /* 3-๋ฌธ์ œ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
    --โ—‹ TBL_TILES ํ…Œ์ด๋ธ”์„ ์กฐํšŒํ•˜์—ฌ
    --   ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋„๋ก ์ฟผ๋ฆฌ๋ฌธ์„ ๊ตฌ์„ฑํ•œ๋‹ค.
    ---> ํŒŒ์ผ๋ช….ํ™•์žฅ์ž
    
    /* 3-๋‚ด๊ฐ€ ํ‘ผ ๋‚ด์šฉ1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
    SELECT FILENO "ํŒŒ์ผ๋ฒˆํ˜ธ"
         , SUBSTR(FILENAME
                , LENGTH(FILENAME) - INSTR(REVERSE(FILENAME), '\',1,1) + 2) 
                "๋’ค์˜ ์Šฌ๋ž˜์‰ฌ~๋งˆ์ง€๋ง‰"
    FROM TBL_FILES;
    
    /* 3-๋‹ค๋ฅธ์‚ฌ๋žŒ์ด ํ‘ผ ๋‚ด์šฉ1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
    SELECT FILENO "ํŒŒ์ผ๋ฒˆํ˜ธ"
         , REVERSE(SUBSTR(REVERSE(FILENAME),1, INSTR(REVERSE(FILENAME), '\',1,1)-1)) 
                    "๋’ค์ง‘๊ธฐ 3๋ฒˆ"
    FROM TBL_FILES;
    
    /* 3-๋‹ค๋ฅธ์‚ฌ๋žŒ์ด ํ‘ผ ๋‚ด์šฉ2 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
    SELECT FILENO "ํŒŒ์ผ๋ฒˆํ˜ธ"
          ,SUBSTR(FILENAME,INSTR(FILENAME, '\',-1,1)+1) 
          "-1 ๋’ค์—์„œ๋ถ€ํ„ฐ ์ฐพ๊ธฐ"
    FROM TBL_FILES;
    
    /* 3-ํ•จ๊ป˜ ํ‘ผ ๋‚ด์šฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
    SELECT FILENO "ํŒŒ์ผ๋ฒˆํ˜ธ"
         , REVERSE(FILENAME)
         , SUBSTR(REVERSE(FILENAME),1, INSTR(REVERSE(FILENAME), '\',1)-1)
    FROM TBL_FILES;
    
    /*
    1	COD.SELAS               \CCC\BBB\AAA\:C             ->์ตœ์ดˆ ใ€Ž\ใ€ ๋“ฑ์žฅ์œ„์น˜ : 10 -> 1~9  ์ถ”์ถœ
    2	SLXX.EAMNAP             \AAA\:C                     ->์ตœ์ดˆ ใ€Ž\ใ€ ๋“ฑ์žฅ์œ„์น˜ : 12 -> 1~11 ์ถ”์ถœ
    3	TPP.HCRAESER            \:D                         ->์ตœ์ดˆ ใ€Ž\ใ€ ๋“ฑ์žฅ์œ„์น˜ : 13 -> 1~13 ์ถ”์ถœ
    4	PWH.YDUTS               \STNEMUCOD\:C               ->์ตœ์ดˆ ใ€Ž\ใ€ ๋“ฑ์žฅ์œ„์น˜ : 10 -> 1~10 ์ถ”์ถœ
    5	TXT.LQS                 \KROWEMOH\PMET\STNEMUCOD\:C ->์ตœ์ดˆ ใ€Ž\ใ€ ๋“ฑ์žฅ์œ„์น˜ : 8  -> 1~8  ์ถ”์ถœ
    6	GNP.REWOLF              \TSET\F\ERAHS\:C            ->์ตœ์ดˆ ใ€Ž\ใ€ ๋“ฑ์žฅ์œ„์น˜ : 10 -> 1~10 ์ถ”์ถœ
    7	LQS.TTOCS_10_02013202   \ELCARO\YDUTS\:E            ->์ตœ์ดˆ ใ€Ž\ใ€ ๋“ฑ์žฅ์œ„์น˜ : 22 -> 1~22 ์ถ”์ถœ
    */
    
    SELECT FILENO "ํŒŒ์ผ๋ฒˆํ˜ธ"
        , FILENAME "๊ฒฝ๋กœํฌํ•จํŒŒ์ผ๋ช…"
        , REVERSE(FILENAME) "๊ฑฐ๊พธ๋กœ๋œ๊ฒฝ๋กœ๋ฐํŒŒ์ผ๋ช…"
        , SUBSTR(๋Œ€์ƒ๋ฌธ์ž์—ด, 1, ์ตœ์ดˆ ใ€Ž\ใ€ ๋“ฑ์žฅ์œ„์น˜ -1) "๊ฑฐ๊พธ๋กœ๋œํŒŒ์ผ๋ช…"
    FROM TBL_FILES;
    
    SELECT FILENO "ํŒŒ์ผ๋ฒˆํ˜ธ"
        , FILENAME "๊ฒฝ๋กœํฌํ•จํŒŒ์ผ๋ช…"
        , REVERSE(FILENAME) "๊ฑฐ๊พธ๋กœ๋œ๊ฒฝ๋กœ๋ฐํŒŒ์ผ๋ช…"
        , SUBSTR(REVERSE(FILENAME), 1, INSTR(REVERSE(FILENAME), '\',1)-1) "๊ฑฐ๊พธ๋กœ๋œํŒŒ์ผ๋ช…"
    FROM TBL_FILES;
    /*
    1	C:\AAA\BBB\CCC\SALES.DOC	            COD.SELAS\CCC\BBB\AAA\:C	            COD.SELAS
    2	C:\AAA\PANMAE.XXLS	                    SLXX.EAMNAP\AAA\:C	                    SLXX.EAMNAP
    3	D:\RESEARCH.PPT	                        TPP.HCRAESER\:D	                        TPP.HCRAESER
    4	C:\DOCUMENTS\STUDY.HWP	                PWH.YDUTS\STNEMUCOD\:C	                PWH.YDUTS
    5	C:\DOCUMENTS\TEMP\HOMEWORK\SQL.TXT	    TXT.LQS\KROWEMOH\PMET\STNEMUCOD\:C	    TXT.LQS
    6	C:\SHARE\F\TEST\FLOWER.PNG	            GNP.REWOLF\TSET\F\ERAHS\:C	            GNP.REWOLF
    7	E:\STUDY\ORACLE\20231020_01_SCOTT.SQL	LQS.TTOCS_10_02013202\ELCARO\YDUTS\:E	LQS.TTOCS_10_02013202
    */
    
    SELECT FILENO "ํŒŒ์ผ๋ฒˆํ˜ธ"
        , FILENAME "๊ฒฝ๋กœํฌํ•จํŒŒ์ผ๋ช…"
        , REVERSE(FILENAME) "๊ฑฐ๊พธ๋กœ๋œ๊ฒฝ๋กœ๋ฐํŒŒ์ผ๋ช…"
        , SUBSTR(REVERSE(FILENAME), 1, INSTR(REVERSE(FILENAME), '\',1)-1) "๊ฑฐ๊พธ๋กœ๋œํŒŒ์ผ๋ช…"
        , REVERSE(SUBSTR(REVERSE(FILENAME), 1, INSTR(REVERSE(FILENAME), '\',1)-1)) "ํŒŒ์ผ๋ช…"
    FROM TBL_FILES;
    /*
    1	C:\AAA\BBB\CCC\SALES.DOC	            COD.SELAS\CCC\BBB\AAA\:C	            COD.SELAS               SALES.DOC
    2	C:\AAA\PANMAE.XXLS	                    SLXX.EAMNAP\AAA\:C	                    SLXX.EAMNAP             PANMAE.XXLS
    3	D:\RESEARCH.PPT	                        TPP.HCRAESER\:D	                        TPP.HCRAESER            RESEARCH.PPT
    4	C:\DOCUMENTS\STUDY.HWP	                PWH.YDUTS\STNEMUCOD\:C	                PWH.YDUTS               STUDY.HWP
    5	C:\DOCUMENTS\TEMP\HOMEWORK\SQL.TXT	    TXT.LQS\KROWEMOH\PMET\STNEMUCOD\:C	    TXT.LQS                 SQL.TXT
    6	C:\SHARE\F\TEST\FLOWER.PNG	            GNP.REWOLF\TSET\F\ERAHS\:C	            GNP.REWOLF              FLOWER.PNG
    7	E:\STUDY\ORACLE\20231020_01_SCOTT.SQL	LQS.TTOCS_10_02013202\ELCARO\YDUTS\:E	LQS.TTOCS_10_02013202   20231020_01_SCOTT.SQL
    */
    
    SELECT FILENO "ํŒŒ์ผ๋ฒˆํ˜ธ"
        , REVERSE(SUBSTR(REVERSE(FILENAME), 1, INSTR(REVERSE(FILENAME), '\',1)-1)) "ํŒŒ์ผ๋ช…"
    FROM TBL_FILES;
    /*
    1	SALES.DOC
    2	PANMAE.XXLS
    3	RESEARCH.PPT
    4	STUDY.HWP
    5	SQL.TXT
    6	FLOWER.PNG
    7	20231020_01_SCOTT.SQL
    */
    
    --โ—‹ LPAD()
    --> Byte ๋ฅผ ํ™•๋ณดํ•˜์—ฌ ์™ผ์ชฝ๋ถ€ํ„ฐ ๋ฌธ์ž์—ด๋กœ ์ฑ„์šฐ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํ•จ์ˆ˜
    SELECT 'ORACLE' "COL1"
        , LPAD('ORACLE',10,'*') "COL2"
    FROM DUAL;
    --> โ‘  10Bype ๊ณต๊ฐ„์„ ํ™•๋ณด ํ•œ๋‹ค.                 -> ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์— ์˜ํ•ด
    --  โ‘ก ํ™•๋ณดํ•œ ๊ณต๊ฐ„์— 'OREACLE' ๋ฌธ์ž์—ด์„ ๋‹ด๋Š”๋‹ค  -> ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์— ์˜ํ•ด
    --  โ‘ข ๋‚จ์•„์žˆ๋Š” Byte ๊ณต๊ฐ„์„ ์™ผ์ชฝ๋ถ€ํ„ฐ ์„ธ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์œผ๋กœ ์ฑ„์šด๋‹ค.
    --  โ‘ฃ ์ด๋ ‡๊ฒŒ ๊ตฌ์„ฑ๋œ ์ตœ์ข… ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    --==>> ORACLE	****ORACLE
    
    
    --โ—‹ RPAD()
    --> Byte ๋ฅผ ํ™•๋ณดํ•˜์—ฌ ์˜ค๋ฅธ์ชฝ๋ถ€ํ„ฐ ๋ฌธ์ž์—ด๋กœ ์ฑ„์šฐ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ํ•จ์ˆ˜
    SELECT 'ORACLE' "COL1"
        , RPAD('ORACLE',10,'*') "COL2"
    FROM DUAL;
    --==>>ORACLE	ORACLE****
    
    --โ—‹ LTRIN()
    SELECT 'ORAORAORAORACLEORACLE' "COL1"   -- ์˜ค๋ผ ์˜ค๋ผ ์˜ค๋ผ ์˜ค๋ผํด ์˜ค๋ผํด
          , LTRIM('ORAORAORAORACLEORACLE', 'ORA') "COL2" 
          , LTRIM('AAAAAAAAAORACLEORACLE', 'ORA') "COL3"
          , LTRIM('ORAORAORAoRACLEORACLE', 'ORA') "COL4" 
          , LTRIM('ORAORA ORAORACLEORACLE', 'ORA')"COL5" -- ์™ผ์ชฝ ๊ณต๋ฐฑ ์ œ๊ฑฐ
          , LTRIM('                ORACLE', ' ')  "COL6" -- ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ์ƒ๋žต
          , LTRIM('                ORACLE') "COL7" 
    FROM DUAL;
    --==>> 
    /*
    ORAORAORAORACLEORACLE	
    CLEORACLE	
    CLEORACLE	
    oRACLEORACLE	 
    ORAORACLEORACLE	
    ORACLE	
    ORACLE
    */
    --**O ํ™•์ธ 'ORA'์— ๋ฌธ์ž์กด์žฌ O -> ์‚ญ์ œ
    --**R ํ™•์ธ 'ORA'์— ๋ฌธ์ž์กด์žฌ O -> ์‚ญ์ œ
    --**A ํ™•์ธ 'ORA'์— ๋ฌธ์ž์กด์žฌ O -> ์‚ญ์ œ
    --**              :
    --**C ํ™•์ธ 'ORA'์— ๋ฌธ์ž์กด์žฌ X -> ๋ฏธ์‚ญ์ œ, ๋
    
    SELECT LTRIM('๊น€์ด์‹ ์ด๊น€๊น€์ด์ด์‹ ๊น€๊น€๊น€์ด๊น€์ด๊น€๋ฐ•์ด๊น€์‹ ', '๊น€์‹ ์ด') "COL1"
    FROM DUAL;
    --==>> ๋ฐ•์ด๊น€์‹ 
    
    --โ—‹ TRTIM()
    --> ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๋Œ€์ƒ์œผ๋กœ
    --  ์™ผ์ชฝ๋ถ€ํ„ฐ **์—ฐ์†์ ์œผ๋กœ ๋“ฑ์žฅ**ํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์—์„œ ์ง€์ •ํ•œ ๊ธ€์ž์™€
    --  ๊ฐ™์€ ๊ธ€์ž๊ฐ€ ๋“ฑ์žฅํ•  ๊ฒฝ์šฐ ์ด๋ฅผ ์ œ๊ฑฐํ•œ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. **์ œ๊ฑฐ ํ›„ ๋‚จ์€ ๊ฒฐ๊ณผ๊ฐ’ ๋ฐ˜ํ™˜**
    --  ๋‹จ, ์™„์„ฑํ˜•์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š๋Š”๋‹ค. **ํ•˜๋‚˜์”ฉ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•จ**
    
    --โ—‹ TRANSLATE()
    --> 1 : 1๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค,
    SELECT TRANSLATE('MY ORACLE SERVER'
                    ,'ABCDEFGHIJKLMNOPQRSTUVWZYZ'
                    ,'abcdefghijklmnopqrstuvwzyz') "COL1"
    FROM DUAL;
    --==>> my oracle server
    --** ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’ M
    --   -> ๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ M ์ฐพ๊ธฐ
    --   -> ์„ธ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์—์„œ ๊ฐ™์€ ์œ„์น˜์— ํ•ด๋‹นํ•˜๋Š” m์œผ๋กœ ๋ณ€ํ™˜
    
    SELECT TRANSLATE('010-9322-9643'
                    , '0123456789'
                    , '๊ณต์ผ์ด์‚ผ์‚ฌ์˜ค์œก์น ํŒ”๊ตฌ') "COL1"
    FROM DUAL;
    --==>> ๊ณต์ผ๊ณต-๊ตฌ์‚ผ์ด์ด-๊ตฌ์œก์‚ฌ์‚ผ
    
    --โ—‹ REPLACE()
    SELECT REPLACE('MY ORACLE SERVER ORAHOME', 'ORA', '์˜ค๋ผ') "COL1"
    FROM DUAL;
    --==>> MY ์˜ค๋ผCLE SERVER ์˜ค๋ผHOME
    
    --โ—‹ ROUND() ๋ฐ˜์˜ฌ๋ฆผ์„ ์ฒ˜๋ฆฌํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜
    SELECT 48.678 "COL1"            -- 48.678
         , ROUND(48.678, 2) "COL2"  -- 48.68     -- ์†Œ์ˆ˜์  ์ดํ•˜ ๋‘˜์งธ์ž๋ฆฌ๊นŒ์ง€ ํ‘œํ˜„ -> ๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ
         --** ์†Œ์ˆ˜์ ์ดํ•˜ ๋‘˜์งธ์ž๋ฆฌ๊นŒ์ง€ ๋‚˜ํƒ€๋‚ด๋ผX
         --** ์†Œ์ˆ˜์ ์ดํ•˜ ๋‘˜์งธ์ž๋ฆฌ๊นŒ์ง€ ํ‘œํ˜„ํ•ด๋ผO
         , ROUND(48.674,2) "COL3"   -- 48.67
         , ROUND(48.674,1) "COL4"   -- 48.7
         , ROUND(48.684,0) "COL5"   -- 49
         , ROUND(48.684)   "COL6"   -- 49         -- ์ •์ˆ˜๊นŒ์ง€๋งŒ ๋ณด์—ฌ๋‹ฌ๋ผ๋Š” 0 ์ƒ๋žต๊ฐ€๋Šฅ
         , ROUND(48.684,-1)"COL7"   -- 50
         , ROUND(48.684,-2)"COL8"   -- 0
         , ROUND(48.684,-3)"COL9"   -- 0
    FROM DUAL;
    --==>> 48.678	48.68	48.67	48.7	49
    
    --โ—‹ TRUNC() ์ ˆ์‚ญ์„ ์ฒ˜๋ฆฌํ•ด ์ฃผ๋Š” ํ•จ์ˆ˜
    SELECT 48.678 "COL1"            -- 48.678
         , TRUNC(48.678, 2) "COL2"  -- 48.67     -- ์†Œ์ˆ˜์  ์ดํ•˜ ๋‘˜์งธ์ž๋ฆฌ๊นŒ์ง€ ํ‘œํ˜„ -> ๋‘๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ
         , TRUNC(48.674,2) "COL3"   -- 48.67
         , TRUNC(48.674,1) "COL4"   -- 48.6
         , TRUNC(48.684,0) "COL5"   -- 48
         , TRUNC(48.684)   "COL6"   -- 48         -- ์ •์ˆ˜๊นŒ์ง€๋งŒ ๋ณด์—ฌ๋‹ฌ๋ผ๋Š” 0 ์ƒ๋žต๊ฐ€๋Šฅ
         , TRUNC(48.684,-1)"COL7"   -- 40
         , TRUNC(48.684,-2)"COL8"   -- 0
         , TRUNC(48.684,-3)"COL9"   -- 0
    FROM DUAL;
    --==>> 48.678	48.67	48.67	48.6	48	48	40	0	0
    
    --โ—‹ MOB() ๋‚˜๋จธ์ง€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜ -> %
    SELECT MOD(5,2) "COL1"
    FROM DUAL;
    --==>> 1
    
    --โ—‹ POWER() ์ œ๊ณฑ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
    SELECT POWER(5,3) "COL1"
    FROM DUAL;
    --==>> 125
    --> 5์˜ 3์Šน ๊ฒฐ๊ณผ๊ฐ’์œผ๋กœ ๋ฐ˜ํ™˜
    
    --โ—‹ SQRT() ๋ฃจํŠธ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
    SELECT SQRT(2) "COL1"
    FROM DUAL;
    --==>> 1.41421356237309504880168872420969807857
    
    --โ—‹ LOG() ๋กœ๊ทธ ํ•จ์ˆ˜
    SELECT LOG(10, 100) "COL1"
          , LOG(10, 20) 
    FROM DUAL;
    --==>> 2	1.30102999566398119521373889472449302677
    
    --โ€ป ์ •์ •
    -- LN() ์ž์—ฐ ๋กœ๊ทธ ์กด์žฌํ•จ~!!!
    SELECT LN(95) "COL1"
    FROM DUAL;
    --==>> 4.55387689160054083460978676511404117675
    
    --โ—‹ ์‚ผ๊ฐํ•จ์ˆ˜
    SELECT SIN(1), COS(1), TAN(1)
    FROM DUAL;
    ----==>> 0.8414709848078965066525023216302989996233	
    --       0.5403023058681397174009366074429766037354	
    --       1.55740772465490223050697480745836017308
    
    -->> ๊ฐ๊ฐ ์‹ธ์ธ, ์ฝ”์‹ธ์ธ, ํƒ„์  ํŠธ ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    
    --โ—‹ ์‚ผ๊ฐํ•จ์ˆ˜์˜ ์—ญํ•จ์ˆ˜(๋ฒ”์œ„: -1 ~ 1)
    SELECT SIN(0.5), COS(0.5), TAN(0.5)
    FROM DUAL;
    ----==>> 
    /*
    0.4794255386042030002732879352155713880819	
    0.8775825618903727161162815826038296520119	
    0.5463024898437905132551794657802853832851
    */
    
    --โ—‹ SIGN() ์„œ๋ช…, ๋ถ€ํ˜ธ, ํŠน์ง•
    --> ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๊ฐ’์ด ์–‘์ˆ˜์ด๋ฉด 1, 0์ด๋ฉด 0, ์Œ์ˆ˜์ด๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    SELECT SIGN(5-2) "COL1"
        , SIGN(5-5) "COL2"
        , SIGN(5-6) "COL3"
    FROM DUAL;
    --==>> 1	0	-1
    
    --> ๋งค์ถœ์ด๋‚˜ ์ˆ˜์ง€์— ๊ด€๋ จํ•˜์—ฌ ์ ์ž ๋ฐ ํ‘์ž์˜ ๊ฐœ๋…์„ ๊ฐ€์งˆ ๋•Œ ์ข…์ข… ์‚ฌ์šฉ๋œ๋‹ค.
    
    --โ—‹ ASCII(), CHR() -> ์„œ๋กœ ๋Œ€์‘(์ƒ์‘)ํ•˜๋Š” ํ•จ์ˆ˜
    SELECT ASCII('A') "COL1"
           , CHR(65) "COL2"
    FROM DUAL;
    --==>> 65	A
    -- <ASCIII()> : ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ฒจ๋ฐ›์€ ๋ฌธ์ž์˜ ์•„์Šคํ‚ค์ฝ”๋“œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    -- <CHR()>    : ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋„˜๊ฒจ๋ฐ›์€ ์•„์Šคํ‚ค์ฝ”๋“œ ๊ฐ’์œผ๋กœ ํ•ด๋‹น ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    
    --โ€ป ๋‚ ์งœ ๊ด€๋ จ ์„ธ์…˜ ์„ค์ • ๋ณ€๊ฒฝ
    ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
    --==>> Session์ด(๊ฐ€) ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    --โ€ป ๋‚ ์งœ ์—ฐ์‚ฐ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„๋Š” ์ผ์ˆ˜(DAY)์ด๋‹ค~!!! CHECK~!!!
    SELECT SYSDATE "COL1"       -- 2023-10-20 15:40:02
         , SYSDATE + 1 "COL2"   -- 2023-10-21 15:40:02
         , SYSDATE - 2 "COL3"   -- 2023-10-18 15:40:02	
         , SYSDATE + 30 "COL4"  -- 2023-11-19 15:40:02
    FROM DUAL;
    
    --โ—‹ ์‹œ๊ฐ„ ๋‹จ์œ„ ์—ฐ์‚ฐ
    SELECT SYSDATE "COL1"           -- 2023-10-20 15:45:15
         , SYSDATE + 1/24 "COL2"    -- 2023-10-20 16:45:15
         , SYSDATE - 1/24 "COL3"    -- 2023-10-20 14:45:15
    FROM DUAL;
    --** 1/24 -> 1์‹œ๊ฐ„
    
    /* 4-๋ฌธ์ œ & ํ•จ๊ป˜ ํ‘ผ ๋‚ด์šฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
    --โ—‹ ํ˜„์žฌ์‹œ๊ฐ„๊ณผ... ํ˜„์žฌ ์‹œ๊ฐ„ ๊ธฐ์ค€ 1์ผ 2์‹œ๊ฐ„ 3๋ถ„ 4์ดˆ ํ›„๋ฅผ ์กฐํšŒํ•œ๋‹ค.
    /*
    ------------------- -------------------
    ํ˜„์žฌ ์‹œ๊ฐ„           ์—ฐ์‚ฐ ํ›„ ์‹œ๊ฐ„
    ------------------- -------------------
    2023-10-20 15:43:27 2023-10-21 17:46:31
    */
    
    SELECT SYSDATE "ํ˜„์žฌ์‹œ๊ฐ„"
         , SYSDATE + 1 + 2/24 + 1/24/60*3 + 1/24/60/60*4 "์—ฐ์‚ฐ ํ›„ ์‹œ๊ฐ„"
         , SYSDATE + 1 + 3/(24*60) + 4/(24*60*60) "์—ฐ์‚ฐ ํ›„ ์‹œ๊ฐ„"
    FROM DUAL;
    --==>> 2023-10-20 15:47:34	2023-10-21 17:50:38
    
    -- ๋ฐฉ๋ฒ• 1.
    SELECT SYSDATE "ํ˜„์žฌ ์‹œ๊ฐ„"
         , SYSDATE + 1 + (2/24) + (3/(24*60)) + (4/(24*60*60)) "์—ฐ์‚ฐ ํ›„ ์‹œ๊ฐ„"
    FROM DUAL;
    --==>> 2023-10-20 16:08:11	2023-10-21 18:11:15
    
    -- ๋ฐฉ๋ฒ• 2.
    SELECT SYSDATE "ํ˜„์žฌ ์‹œ๊ฐ„"
         , SYSDATE + ((1*24*60*60) + (2*60*60) + (3*60) + 4)/ (24*60*60) "์—ฐ์‚ฐ ํ›„ ์‹œ๊ฐ„"
    FROM DUAL;
    --==>> 2023-10-20 16:07:57	2023-10-21 18:11:01
    
    --โ—‹ ๋‚ ์งœ - ๋‚ ์งœ -> ์ผ์ˆ˜
    SELECT TO_DATE('2024-03-19','YYYY-MM-DD') - TO_DATE('2023-08-22', 'YYYY-MM-DD') "COL1"
    FROM DUAL;
    --==>> 210
    
    --โ—‹ ๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ๋ณ€ํ™˜
    SELECT TO_DATE('2023-10-20', 'YYYY-MM-DD') "COL1"
    FROM DUAL;
    --==>> 2023-10-20 00:00:00
    
    SELECT TO_DATE('2023-10-32', 'YYYY-MM-DD') "COL1"
    FROM DUAL;
    --==>> ์—๋Ÿฌ๋ฐœ์ƒ
    --        (ORA-01847: day of month must be between 1 and last day of month)
    
    SELECT TO_DATE('2023-02-29', 'YYYY-MM-DD') "COL1"
    FROM DUAL;
    --==>> ์—๋Ÿฌ ๋ฐœ์ƒ(ORA-01839: date not valid for month specified)
    
    SELECT TO_DATE('2023-13-20', 'YYYY-MM-DD') "COL1"
    FROM DUAL;
    --==>> ์—๋Ÿฌ ๋ฐœ์ƒ()
    
    --โ€ป TO_DATE() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฌธ์ž ํƒ€์ž…์„ ๋‚ ์งœ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ
    --   ๋‚ด๋ถ€์ ์œผ๋กœ ํ•ด๋‹น ๋‚ ์งœ์— ๋Œ€ํ•œ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์ด๋ฃจ์–ด์ง„๋‹ค.
    
    --โ—‹ ADD_MONTHS() ๊ฐœ์›” ์ˆ˜๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ์ฃผ๋Š” ํ•จ์ˆ˜
    SELECT SYSDATE "COL1"
        , ADD_MONTHS(SYSDATE, 2) "COL2"
        , ADD_MONTHS(SYSDATE, 3) "COL3"
        , ADD_MONTHS(SYSDATE, -2) "COL4"
        , ADD_MONTHS(SYSDATE, -3) "COL5"
    FROM DUAL;
    --==>> 
    /*
    2023-10-20 16:19:46 -> ํ˜„์žฌ	
    2023-12-20 16:19:46	-> 2๊ฐœ์›” ํ›„
    2024-01-20 16:19:46	-> 3๊ฐœ์›” ํ›„
    2023-08-20 16:19:46	-> 2๊ฐœ์›” ์ „
    2023-07-20 16:19:46 -> 3๊ฐœ์›” ์ „
    */
    
    --โ—‹ MONTHS_BETWEEN()
    --> ์ฒซ ๋ฒˆ์งธ ์ธ์ž๊ฐ’์—์„œ ๋‘ ๋ฒˆ์งธ ์ธ์ž๊ฐ’์„ ๋บ€ ๊ฐœ์›”์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    SELECT MONTHS_BETWEEN(SYSDATE, TO_DATE('2002-05-31','YYYY-MM-DD')) "COL1"
    FROM DUAL;
    --==> 256.667209901433691756272401433691756272
    
    --> ๊ฐœ์›” ์ˆ˜์˜ ์ฐจ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ํ•จ์ˆ˜
    --  ๊ฒฐ๊ณผ๊ฐ’์˜ ๋ถ€ํ˜ธ๊ฐ€ <->(์Œ์ˆ˜)๋กœ ๋ฐ˜ํ™˜๋˜์—ˆ์„ ๊ฒฝ์šฐ์—๋Š”
    --  ์ฒซ ๋ฒˆ์งธ ์ธ์ž๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๋‚ ์งœ๋ณด๋‹ค
    --  ๋‘ ๋ฒˆ์งธ ์ธ์ž๊ฐ’์— ํ•ด๋‹นํ•˜๋Š” ๋‚ ์งœ๊ฐ€ <๋ฏธ๋ž˜>๋ผ๋Š” ์˜๋ฏธ๋กœ ํ™•์ธํ•  ์ˆ˜ ์ด์‹ฟ.
    
    --โ—‹ NEXT_DAY()
    SELECT NEXT_DAY(SYSDATE, 'ํ† ') "COL1"
        , NEXT_DAY(SYSDATE, '์›”') "COL2"
    FROM DUAL;
    --==>> 2023-10-21 16:25:45	2023-10-22 16:25:45
    
    --โ€ป ์ถ”๊ฐ€ ์„ธ์…˜ ์„ค์ • ๋ณ€๊ฒฝ
    ALTER SESSION SET NLS_DATE_LANGUAGE = 'ENGLISH';
    
    SELECT NEXT_DAY(SYSDATE, 'SAT') "COL1"
         , NEXT_DAY(SYSDATE, 'MON') "COL2"
    FROM DUAL;
    --==>> 2023-10-21	2023-10-23
    
    --โ€ป ์ถ”๊ฐ€ ์„ธ์…˜ ์„ค์ • ๋ณ€๊ฒฝ
    ALTER SESSION SET NLS_DATE_LANGUAGE = 'KOREAN';
    --==>> Session์ด(๊ฐ€) ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD';
    --==>> Session์ด(๊ฐ€) ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    --โ—‹ LAST_DAY()
    --> ํ•ด๋‹น ๋‚ ์งœ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ทธ๋‹ฌ์˜ ๋งˆ์ง€๋ง‰ ๋‚ ์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    SELECT SYSDATE "COL1"                                       -- 2023-10-20
        , LAST_DAY(SYSDATE) "COL2"                              -- 2023-10-31
        , LAST_DAY(TO_DATE('2023-02-12', 'YYYY-MM-DD')) "COL3"  -- 2023-02-28
        , LAST_DAY(TO_DATE('2020-02-12', 'YYYY-MM-DD')) "COL3"  -- 2020-02-29
    FROM DUAL;
    
    /* 5-๋ฌธ์ œ & ํ•จ๊ป˜ ํ‘ผ ๋‚ด์šฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
    --โ—‹ ์˜ค๋Š˜๋ถ€๋กœ.. ์ •ํ™˜์ด๊ฐ€ ๊ตฐ๋Œ€์— ๋‹ค์‹œ ๋Œ๋ ค๊ฐ„๋‹ค.
    -- ๋ณต๋ฌด๊ธฐ๊ฐ„์€ 22๊ฐœ์›”๋กœ ํ•œ๋‹ค.
    
    -- 1. ์ „์—ญ ์ผ์ž๋ฅผ ๊ตฌํ•œ๋‹ค.
    SELECT SYSDATE "TODAY"
        , ADD_MONTHS(SYSDATE, 22) "์ „์—ญ์ผ์ž"
    FROM DUAL;
    
    -- ํ•˜๋ฃจ ๊ผฌ๋ฐ•๊ผฌ๋ฐ• 3๋ผ ์‹์‚ฌ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด..
    -- ์ •ํ™˜์ด๊ฐ€ ๋ช‡ ๋ผ๋ฅผ ๋จน์–ด์•ผ ์ง‘์— ๋ณด๋‚ด์ค„๊นŒ?
    
    -- ๋ณต๋ฌด๊ธฐ๊ฐ„ * 3
    -- --------
    -- (์ „์—ญ์ผ์ž - ํ˜„์žฌ์ผ์ž)
    -- (์ „์—ญ์ผ์ž - ํ˜„์žฌ์ผ์ž) * 3
    
    SELECT SYSDATE "TODAY"
        , ADD_MONTHS(SYSDATE, 22) "์ „์—ญ์ผ์ž"
        , (ADD_MONTHS(SYSDATE, 22) - SYSDATE)*3 "COL1"
    FROM DUAL;
    --==>> 2010
    
    --โ€ป ๋‚ ์งœ ๊ด€๋ จ ์„ธ์…˜ ์„ค์ • ๋ณ€๊ฒฝ
    ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS';
    --==>> Session์ด(๊ฐ€) ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    
    /* 5-๋ฌธ์ œ & ํ•จ๊ป˜ ํ‘ผ ๋‚ด์šฉ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
    --โ—‹ ํ˜„์žฌ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„์œผ๋กœ๋ถ€ํ„ฐ...
    --   ์ˆ˜๋ฃŒ์ผ(2024-03-18 18:00:00) ๊นŒ์ง€
    --   ๋‚จ์€ ๊ธฐ๊ฐ„์„... ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฟผ๋ฆฌ๋ฌธ์„ ๊ตฌ์„ฑํ•œ๋‹ค.
    /*
    -------------------     -------------------    ---- ----- ---- ---
    ํ˜„์žฌ ์‹œ๊ฐ„               ์ˆ˜๋ฃŒ์ผ                 ์ผ    ์‹œ๊ฐ„   ๋ถ„  ์ดˆ
    -------------------     -------------------    ---- ----- ---- ---
    2023-10-20 17:09:10     2024-03-19 18:00:00     140     0   49  50
    -------------------     -------------------    ---- ----- ---- ---
    ๋ถ„ 67๋ถ„..X
    */
    /*SELECT SYSDATE "ํ˜„์žฌ์‹œ๊ฐ„"
    --     , TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') "์ˆ˜๋ฃŒ์ผ"
    --     , TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE "์ˆ˜๋ฃŒ์ผ-ํ˜„์žฌ"
         , TRUNC(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE) "์ผ"  
    --     , MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1) "์ผ์ œ์™ธ๋‚˜๋จธ์ง€"
    --     , MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24 "์‹œ๊ฐ„"
         , TRUNC(MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24) "์‹œ๊ฐ„"
    --     , MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24*60 "๋ถ„"
         , TRUNC(MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24*60) "๋ถ„"
         , MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24*60
            --- TRUNC(MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24*60)
         "์ดˆ"
         , MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24*60
            --- TRUNC(MOD(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE,1)*24*60)
         "์ดˆ"
    FROM DUAL;*/
    
    /* 5-๋‹ค๋ฅธ์‚ฌ๋žŒ์ด ํ‘ผ ๋‚ด์šฉ1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
    SELECT SYSDATE "ํ˜„์žฌ ์‹œ๊ฐ„"
        , TO_DATE('2024-03-19 18:00:00', 'YYYY-MM-DD HH24:MI:SS') "์ˆ˜๋ฃŒ์ผ"
        , TRUNC(TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE) "์ผ"
        , TRUNC(MOD((TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE)*24,24)) "์‹œ๊ฐ„"
        , TRUNC(MOD((TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE)*24*60,60)) "๋ถ„"
        , TRUNC(MOD((TO_DATE('2024-03-19 18:00:00','YYYY-MM-DD HH24:MI:SS') - SYSDATE)*24*60*60,60)) "์ดˆ"
    FROM DUAL;

    2. ํ•จ์ˆ˜: 

    2.1. ์ˆ˜ํ•™ํ•จ์ˆ˜: ROUND(), TRUNC(), MOD(5,2)

    ํ•จ์ˆ˜ ์„ค๋ช… EX
    ROUND() ๋ฐ˜์˜ฌ๋ฆผ ROUND(48.678, 2) "COL2"  -- 48.68
    TRUNC() ์ ˆ์‚ญ TRUNC(48.678, 2) "COL2"  -- 48.67
    MOD(5,2) ๋‚˜๋จธ์ง€ MOD(5,2) "COL1" -- 1

    2.2. ๋‚ ์งœํ•จ์ˆ˜:SYSDATE, ADD_MONTHS(SYSDATE, 2) , TO_DATE(), MONTHS_BETWEEN(), NEXT_DAY(), LAST_DAY()

    ํ•จ์ˆ˜ ์„ค๋ช… EX
    SYSDATE ๋‚ ์งœ ์—ฐ์‚ฐ
    ( ๊ธฐ๋ณธ ๋‹จ์œ„๋Š” ์ผ์ˆ˜(DAY) )
     
    SYSDATE + 1/24 ์‹œ๊ฐ„ ๋‹จ์œ„ ์—ฐ์‚ฐ  
    ADD_MONTHS(SYSDATE, 2) ADD_MONTHS() ๊ฐœ์›” ์ˆ˜๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๋นผ์ฃผ๋Š” ํ•จ์ˆ˜  
    TO_DATE() ๋ฌธ์ž ํƒ€์ž…์„ ๋‚ ์งœ ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜  
    MONTHS_BETWEEN() ์ฒซ ๋ฒˆ์งธ ์ธ์ž๊ฐ’์—์„œ ๋‘ ๋ฒˆ์งธ ์ธ์ž๊ฐ’์„ ๋บ€ ๊ฐœ์›”์ˆ˜ MONTHS_BETWEEN(SYSDATE, TO_DATE('2002-05-31','YYYY-MM-DD'))
    NEXT_DAY() ์ œ์ผ ๊ฐ€๊นŒ์šด ์š”์ผ NEXT_DAY(SYSDATE, '์›”')
    LAST_DAY() ํ•ด๋‹น ๋‚ ์ž๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ทธ๋‹ฌ์˜ ๋งˆ์ง€๋ง‰ ๋‚  LAST_DAY(TO_DATE('2023-02-12', 'YYYY-MM-DD'))