DBMS - SUBSTR

박종휘·2022년 10월 1일
0

DBMS - 국비

목록 보기
6/7
post-thumbnail

1. SUBSTR(문자열, 시작위치, 길이)

SELECT SUBSTR('good morning john', 1, 4)
FROM dual 
;

SELECT SUBSTR('good morning john', 8, 4) 
FROM dual 
;

SELECT SUBSTR('good morning john', 8) 
FROM dual 
;

SELECT SUBSTR('good morning john', -4) 
FROM dual 
;


2. replace : 지정 문자열 변환

replace('문자열', '변환하고 싶은 문자열', '변환하려고 하는 문자열')

SELECT REPLACE('good morning tom', 'morning', 'evenning')
FROM dual 
;


3. 날짜와 시간

3-1. sysdate : 현재 날짜와 시간 조회

SELECT SYSDATE 
FROM dual 
;

3-2. add_month : N개월 후의 날짜

SELECT ADD_MONTHS(SYSDATE, 7), SYSDATE 
FROM dual 
;
-> 현재로부터 7개월 후의 날짜

3-3. last_day : 현재 달의 마지막 날짜

SELECT LAST_DAY(SYSDATE)
FROM dual 
;

3-4. interval

SELECT SYSDATE + (INTERVAL '1' YEAR) -- 1년 후
	,  SYSDATE + (INTERVAL '1' MONTH) -- 1개월 후
    ,  SYSDATE + (INTERVAL '1' DAY) -- 1일 후
    ,  SYSDATE + (INTERVAL '1' HOUR) -- 1시간 후
    ,  SYSDATE + (INTERVAL '1' MINUTE) -- 1분 후
    ,  SYSDATE + (INTERVAL '1' SECOND) -- 1초 후
FROM DUAL
;

4. 변환

4-1. to_char() : 문자열 변환

SELECT SYSDATE
	,  TO_CHAR(SYSDATE, 'yyyy/mm/dd')
FROM DUAL
;

SELECT SYSDADTE
	,  TO_CHAR(SYSDATE, 'yyyymmdd')
    ,  TO_CHAR(SYSDATE, 'yyyy-mm-dd')
    ,  TO_CHAR(SYSDATE, 'yyyy-mm-dd HH24:mi:ss')
    ,  TO_CHAR(SYSDATE, 'yy.mm.dd')
FROM DUAL
;

4-2. to_date() : 문자열을 date 타입으로 변환

SELECT TO_DATE('22/04/11')
	,  '2022/04/11'
FROM DUAL

4-3. nvl() : NULL값을 다른 데이터로 변경하는 함수

nvl(컬럼명, null값에서 바꾸고 싶은 값)

SELECT FIRST_NAME , LAST_NAME , COMMISSION_PCT , NVL(COMMISSION_PCT, 0)
FROM EMPLOYEES e


5. DECODE() : switch 문의 역할을 하는 함수

-- department_id가 20이면 Marketing -> MA / 60이면 IT -> IT / 90이면  Executive -> EX / ETC

SELECT DEPARTMENT_ID
	,  DECODE(DEPARTMENT_ID, 20, 'MA', 60, 'IT', 90, 'EX', 'ETC')
FROM DEPARTMENTS d
;


6. CASE() : else if 문과 같은 역할의 함수

SELECT FIRST_NAME , LAST_NAME , DEPARTMENT_ID
	,  CASE WHEN DEPARTMENT_ID = 20 THEN 'MA'
            WHEN DEPARTMENT_ID = 60 THEN 'IT'
            WHEN DEPARTMENT_ID = 90 THEN 'EX'
            ELSE '' -- 이외의 값들은 NULL
       END "deptvalue" -- 알리야스
FROM EMPLOYEES e

7. 예제

/*
 * 1. EMPLOYEES 테이블에서 King의 정보를 소문자로 검색하고(검색조건),
 * 사원번호, 성명, 담당업무(소문자 출력), 부서번호를 출력
 */


/*
 * 2. EMPLOYEES 테이블에서 King의 정보를 대문자로 검색하고(검색조건),
 * 사원번호, 성명, 담당업무(대문자 출력), 부서번호로 출력
 */


/*
 * 3. DEPARTMENTS 테블에서 부서번호와 부서이름 위치번호(LOCATION_ID)를 
 * 합하여 출력하도록 하라
 */


/*
 * 4. EMPLOYEES 테이블에서 30번 부서 중 사원번호 이름과 담당 아이디를
 * 연결하여 출력하여라
 */


/*
 * 5. EMPLOYEES 테이블에서 SALARY + SALARY*COMMISSION_PCT이 10000이상이면, 'good',
 *                                                      5000이상이면, 'average',
 *                                                      1이상 5000미만이면 'bad'
 *                                                      0이면 'no good'
 *                                                      -> 알리아스 grade
 *  으로 평가를 출력하고, employee_id, first_name, salary, commission_pct,
 *  SALARY + SALARY*COMMISSION_PCT 출력
 */
profile
개린이의 개발 고수되기 작전!

0개의 댓글