1. 치환 함수 

NVL(컬럼, 숫자)   숫자로 치환

NVL(컬럼, '문자')  문자로 치환

NVL2 NULL이 아닐경우 ㅇㅇ으로 치환


우선 전체 데이터를 확인해보겠습니다.



클릭 위치를 보면 Kimbeerely씨의 DEPARTMENT_ID가    NULL 값이 들어가있습니다.


null값을 80으로 치환하여 출력합니다. (활용의 예: 금액에 NULL일경우 0으로 )


1
SELECT NVL(DEPARTMENT_ID,80FROM EMPLOYEES;
cs



2. DECODE 함수


DECODE ( A , B , 1)    

A가 B라면 1을 출력  (A=B 라면 1을 출력)  A!=B 나머지는 NULL을 출력합니다

1
SELECT FIRST_NAME, DECODE(DEPARTMENT_ID,110,1FROM EMPLOYEES;
cs


DECODE ( A , B , 1, 2) 

A가 B라면 1을 출력 아니라면 2을 출력 


1
SELECT FIRST_NAME, DECODE(DEPARTMENT_ID,110,1,2FROM EMPLOYEES;
cs

DECODE ( A , B , 1, 2) 

A가 B라면 1을 출력 아니라면 2을 출력 



DECODE ( A , B , 1, C, 2, 3) 

A가 B라면 1을 출력하고 A가 C라면 2를 출력하고 아무것도 아니라면 3을 출력

1
SELECT FIRST_NAME, DECODE(DEPARTMENT_ID,110,1,100,2,3FROM EMPLOYEES;
cs


DECODE ( A , B , DECODE( C, D, 3)) 

A가 B일 경우중 C = D 라면 3을 출력


 

3. CASE 함수

#문법#


CASE 조건 WHEN 결과1 THEN 출력1

  WHEN 결과2 THEN 결과2

             ELSE 출력 3

END "컬럼명"


1
2
3
4
5
6
7
8
SELECT FIRST_NAME,DEPARTMENT_ID,
       CASE DEPARTMENT_ID WHEN 10 THEN 'TEAM-1'
                          WHEN 20 THEN 'TEAM-2'
                          WHEN 30 THEN 'TEAM-3'
                          ELSE 'N/A'
       END "TEAM"
FROM EMPLOYEES
WHERE DEPARTMENT_ID <50
cs



1. SYSDATE 함수

   OS(리눅스 윈도우 등)에서 시간을 가져옵니다.


1
2
  
SELECT SYSDATE FROM DUAL;
cs



2. SYSDATE 함수 (FORMAT 변경하기)

  

1
ALTER SESSION SET NLS_DATE_FORMAT= 'YYYY-MM-DD:HH24:MI:SS';
cs


3. MONTHS_BETWEEN함수

두 날짜 사이의 개월 수를 출력하는 함수

SYSDATE - HIRE_DATE 


1
2
SELECT SYSDATE, MONTHS_BETWEEN(SYSDATE,hire_date)
FROM EMPLOYEES;
cs





4. ADD_MONTHS함수

기준일에 + 개월 수


1
2
SELECT HIRE_DATE, ADD_MONTHS(hire_date,5)
FROM EMPLOYEES;
cs





4. NEXT_DAY 함수

지정된 요일 가장 빠른 날짜


1
SELECT SYSDATE, NEXT_DAY(SYSDATE,'월'FROM DUAL;
cs





5. LAST_DAY 함수

지정된 날짜가 속한 달의 마지막 날 출력


1
SELECT SYSDATE, LAST_DAY(SYSDATE) FROM DUAL;
cs





 




 en  






기존 테이블


1
2
3
4
5
6
7
8
9
10
CREATE TABLE CRUD
(
    CRNO            INT               NOT NULL
    CRTITLE         VARCHAR2(255)     NULL
    USERNO          INT               NULL
    CRMEMO          VARCHAR2(1000)    NULL
    CRDATE          DATE              NULL
    CRDELETEFLAG    CHAR(1)           NULL
    CONSTRAINT CRUD_PK PRIMARY KEY (CRNO)
)
cs



1. 모든 컬럼 및 데이터 복사하기


1
2
3
4
CREATE TABLE CRUD1
 AS 
SELECT * FROM CRUD
 
cs



2. 특정 컬럼 만 복사하기


1
2
3
4
5
CREATE TABLE CRUD2
 AS 
SELECT CRTITLE , CRMEMO
FROM CRUD
 
cs



3. 테이블 구조만 가져오고 데이터는 안가져오기


1
2
3
4
CREATE TABLE CRUD3
AS
SELECT * FROM CRUD
WHERE 1=2;
cs


컬럼은 그대로 가져왔는데 데이터는 없다!!

'데이터베이스 > Oracle' 카테고리의 다른 글

4. 오라클 (숫자관련 함수)  (0) 2018.02.20
3. 오라클 기초 (문자함수)  (0) 2018.02.18
2. 오라클 기초 익히기 (WHERE)  (0) 2018.02.18
1. 오라클 기초 익히기  (0) 2018.02.18
2. 가상 컬럼 만들기  (0) 2018.02.16

+ Recent posts