.

Oracle에서 개발할 때 사용하는 함수들 중 NVL함수에 대해 활용법에 대해서 작성하려고 한다.

이전에는 NVL은 그냥 [NULL값을 치환해주는 함수]로만 생각하며 쿼리를 작성하였다.

 

[EX_1] 단순한 NVL함수 활용법 (NULL값 치환)

Table A 

TABLE A

SELECT

     NVL(CODE, '123') AS CODE,

     NAME

FROM A

 

실행 값

RESULT

※ 이렇게 NULL값을 채운다는 생각으로만 쓰였지만 

두 개 이상의 테이블을 조인할 때 좀 더 유용하게 NVL함수를 사용을 할 수 있다.

 

[EX_2]

 

TABLE A 
TABLE B

다음과 같이 두 개의 테이블을 조인하여 같은 회사(COMPANY_CD)에서 A.CODE 칼럼과 B.CODE_TYPE 칼럼을 서로 매칭 하여 B 테이블의 NULL값을 포함한 TIGON이라는 값을 얻으려고 할 때 NVL을 사용할 수 있다.

 

처음에는 NULL값이라서 매칭을 할 수 없는데 어떻게 결과값을 도출할 수 있을까 생각을 했었다.

SELECT 

    A.COMPANY_CD,

    B.TIGON

FROM A 

INNER JOIN B 

             ON A.COMPANY_CD = B.COMPANY_CD

            AND A.CODE = NVL(B.CODE_TYPE, A.CODE)

 

 

이상.

CREATE SEQUENCE TABLENAME_SEQ  -- 시퀀스 이름
START WITH 1  -- 시퀀스 값 1부터
INCREMENT BY 1 -- 1씩증가
NOMAXVALUE  -- 시퀀스의 범위를 무한대(9999999999999999999999999999)로 지정
NOCACHE; -- 캐시값 없애기

 

[NOCACHE]

- ORACLE에서 시퀀스를 생성하면 시퀀스의 값을 1~20까지 캐시값으로 미리 만든다.

이렇게 미리 캐시값으로 시퀀스 값이 미리 생성이 된 후 서버에 다시 접속을 하게되면 1 다음에 2가 아닌 21라는 값으 로 시퀀스가 생성된다. 이를 방지하기 위하여 NOCAHE라는 명령어로 캐시값을 지정하지 않고 1부터 차례대로 시퀀스 값을 생성할 수 있다.

 

'SQL > ORACLE' 카테고리의 다른 글

Oracle NVL 함수 활용  (0) 2021.04.15
[ORACLE] 달러 환율 및 원화 구하기  (0) 2019.07.18

SELECT TO_CHAR(5000/1182,'$999,999,999.99') 환율달러,  
TO_CHAR(5000,'L999,999,999') 원화 FROM DUAL;

 

'SQL > ORACLE' 카테고리의 다른 글

Oracle NVL 함수 활용  (0) 2021.04.15
[ORACLE] 값 하나씩 올라가는 시퀀스 생성하기  (0) 2019.07.18

+ Recent posts