728x90
반응형
NVL 함수 : NULL 값을 원하는 값으로 조회
NVL( 값 혹은 컬럼, 치환 값)
NVL
1 2 | SELECT EMPNO, ENAME, COMM, NVL(COMM, 0) FROM EMP; | cs |
위에서 NVL은 COMM의 NULL 값을 0으로 바꿔주세요. 이다
1 2 | SELECT EMPNO, ENAME, COMM, NVL(COMM, '인센티브없음') FROM EMP; | cs |
위 쿼리는 자료형이 일치하지 않아서 실행안된다. COMM은 숫자형이니 문자열과 일치하지 않다.
NVL2(값 혹은 컬럼, NULL이 아닐때 값, NULL일 때 치환 값)
NVL2
1 2 3 4 | SELECT COMM , NVL(COMM, 0) , NVL2(COMM, 1000, 0 ) FROM EMP; | cs |
NVL2을 말하자면, COMM이 널이 아니면 1000, 널이면 0이라는 말이다.
1 2 3 4 5 | SELECT COMM , NVL(COMM, 0) , NVL2(COMM, 1000, 0 ) , NVL2(COMM,'널이 아님', '널임') FROM EMP; | cs |
NVL2는 자료형이 불일치하더라도 NVL과 다르게 조회가 가능하다.
DECODE( ) 함수 -> 자바의 IF, ELSE IF, ELSE
1 2 3 4 5 | SELECT DEPTNO , DECODE(DEPTNO, 10, '인사부') -- 부서번호가 10이면 인사부 나머지는 NULL , DECODE(DEPTNO, 10, '인사부', '개발부') -- 부서번호가 10이면 인사부, 나머지는 개발 부 , DECODE(DEPTNO, 10, '인사부', 20, '개발부', '영업부') -- 부서번호가 10이면 인사부, 20은 개발부, 나머지는 영업부 FROM EMP; | cs |
CASE 문
1 2 3 4 5 6 7 8 9 10 | SELECT DEPTNO , CASE WHEN DEPTNO = 10 THEN '인사부' WHEN DEPTNO = 20 THEN '개발부' ELSE '영업부' END AS 부서명1 , CASE DEPTNO WHEN 10 THEN '인사부' WHEN 20 THEN '개발부' ELSE '영업부' END AS 부서명2 FROM EMP; | cs |
DECODE나 CASE를쓰면 엄청 길어지기 때문에 반드시 별칭을 써주자.
위 CASE 안에 있는 것은 모두 같은 의미이다. 편한걸로 사용하자.
NVL과 CASE, DECODE정도는 알아두자.
728x90
반응형
'✨ DBMS > Oracle' 카테고리의 다른 글
[Oracle / SQL] 조인(JOIN) (0) | 2023.02.27 |
---|---|
[Oracle / SQL] 단일행 함수(Single)와 다중행 함수(Mutible) (1) | 2023.02.26 |
[Oracle / SQL] SQL INSERT, UPDATE, DELETE (0) | 2023.02.23 |
[Oracle / SQL] 더미테이블(DUAL)과 유용한 숫자 함수 예제 2 (0) | 2023.02.21 |
[Oracle / SQL] 더미테이블(DUAL)과 유용한 문자 함수 예제 (0) | 2023.02.21 |
댓글