일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- perl string
- Oracle RAC
- MySQL
- mariaDB
- Linux
- oracle install
- rac
- oracle
- prompt
- dba
- solaris
- perl one-liner
- grid
- patch
- php5
- cygwin
- Unix
- SQL
- solaris network
- 오라클
- sqlplus
- command & perl
- Network
- 연산자
- RHEL4
- memory
- fdisk
- PERL
- perl + 정규표현식
- bash
Archives
- Today
- Total
DATA 전문가로 가는 길
[SQL] NULL과 NULL 비교 방법(SYS_OP_MAP_NONNULL 함수 응용) 본문
Data Architecture/SQL Query
[SQL] NULL과 NULL 비교 방법(SYS_OP_MAP_NONNULL 함수 응용)
EstenPark 2012. 2. 1. 10:28/* Oracle의 SYS_OP_MAP_NONMULL 함수는 비공식적인 함수지만 가끔 유용하게 사용할 수 있습니다. NULL 값끼리 '=' 비교(NULL = NULL)하면 FALSE 지만 TRUE가 되도록 처리해야 하는 경우가 있고, 그럴 때 이 함수를 사용하면 됩니다. A : NULL B : NOT NULL C : NULL */ SELECT A.* ,-- 일반 조건절로 대입했을 경우 CASE WHEN A = B THEN 'TRUE' -- NULL = NOT NULL = FALSE ELSE 'FALSE' END COL1 ,CASE WHEN A = C THEN 'TRUE' -- NULL = NULL = FALSE ELSE 'FALSE' END COL2 ,-- SYS_OP_MAP_NONNULL 비공식 함수 CASE WHEN SYS_OP_MAP_NONNULL(A) = SYS_OP_MAP_NONNULL(B) THEN 'TRUE' -- NULL = NOT NULL = TRUE ELSE 'FALSE' END COL3 ,CASE WHEN SYS_OP_MAP_NONNULL(A) = SYS_OP_MAP_NONNULL(C) THEN 'TRUE' -- NULL = NULL = FALSE ELSE 'FALSE' END COL4 FROM (SELECT NULL A, 'DATA' B, NULL C FROM DUAL) A
만약 SYS_OP_MAP_NONNULL 함수를 사용하지 않는다면 NVL(A, 0) = NVL(B, 0)와 같이 쿼리를 작성해도 됩니다.
'Data Architecture > SQL Query' 카테고리의 다른 글
[SQL] 오라클 테이블레이아웃 조회 쿼리 (0) | 2015.02.14 |
---|---|
[SQL] 오라클(Oracle) External Table Auto Script(자동 생성기) (0) | 2013.11.21 |
[SQL] 오라클(Oracle) 패키지 내에서 사용하는 테이블 추출 방법 (2) | 2013.10.08 |
[SQL] 오라클 누적 곱 계산 방법 (0) | 2013.09.23 |
[SQL] Oracle SQL*Loader 자동 스크립트(컨트롤파일 생성) (0) | 2012.11.24 |
Comments