hyeonga_code

Database_22_일반 함수_함수의 중첩 본문

Oracle Database

Database_22_일반 함수_함수의 중첩

hyeonga 2023. 7. 25. 05:59
반응형

   

-- 함수의 중첩
        -- 단일 행_row 함수는 여러 번 중첩될 수 있습니다.
        -- 가장 안쪽부터 바깥쪽 순으로 계산합니다.
        
SELECT last_name, UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 4), '_US'))
FROM employees
WHERE department_id = 60;
    /*
    LAST_NAME   UPPER( CONCAT( SUBSTR( LAST_NAME, 1, 4 ), '_US'))
                            |           |             |---------------- (1) ----------------|            |
                            |           |----------------------------- (2) --------------------------|
                            |--------------------------------- (3) --------------------------------|  
        -- 1) SUBSTR (LAST_NAME, 1, 4), '_US : 성의 첫 문자부터 4번째 문자까지 문자열로 반환합니다.
        -- 2) CONCAT(SUBSTR (LAST_NAME, 1, 4), '_US') : 2)번에서 반환한 값과 _US를 결합하여 반환합니다..
        -- 3) UPPER(CONCAT(SUBSTR (LAST_NAME, 1, 4), '_US')) : 3)번에서 반환한 값을 모두 대문자로 출력합니다.
        
    LAST_NAME   UPPER( CONCAT( SUBSTR( LAST_NAME, 1, 4 ), '_US'))
    --------------------------------------------------------------------------------------------
    Hunold                     HUNO_US
    Ernst                        ERNS_US
    Lorentz                    LORE_US
    */



SELECT last_name, NVL(TO_CHAR(manager_id), 'No Manager')
FROM employees
WHERE manager_id IS NULL;
    /*
    LAST_NAME   NVL( TO_CHAR( manager_id ), 'No Manager' )
                            |      |--------------- (1) ---------------|                     |
                            |--------------------------- (2) ---------------------------|
        -- 1) TO_CHAR( manager_id ) : manager_id를 문자열로 반환합니다.
        -- 2) NVL( TO_CHAR( manager_id ), 'No Manager' ) : 1)번에서 반환한 값이 null인 경우 'No Manager'를 반환합니다.

    LAST_NAME   NVL( TO_CHAR( manager_id ), 'No Manager' )
    -----------------------------------------------------------------------------------
    King                   No Manager
    */



SELECT TO_CHAR(NEXT_DAY(ADD_MONTHS(hire_date, 6), '금'),  'YYYY-MM-DD DAY')
FROM employees
ORDER BY hire_date;
    /*
    TO_CHAR( NEXT_DAY( ADD_MONTS(hire_date, 6), '금'), 'YYYY-MM-DD DAY')
    --------------------------------------------------------------------------------------------------

        2002-12-20 금요일
        2003-03-21 금요일
        2005-03-25 금요일
        2005-07-08 금요일
    */



반응형