Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 이클립스 알고리즘 세팅
- 이클립스 알고리즘 환경
- Eclipse Althrithm
- 백준 1000번 java
- 백준 10950번 java
- 오라클
- 백준 10951번 c++
- 티스토리 초대장
- 백준 10950번 c
- 자바스크립트
- JavaScript
- 포항 지진
- 백준 알고리즘
- 백준 1000번
- 백준 1000번 c++
- 백준10950번 c++
- 배열 복사
- 백준 10951번 c
- 백준 10950번
- nodejs
- 백준 10951번
- oracle
- 티스토리 초대장 이벤트
- 2020 펭수 달력
- 지진
- 펭수 2020 달력
- 펭수 달력
- 백준 10951번 java
- RETURN ROW IF NO DATA FOUND
- 백준 1000번 c
Archives
- Today
- Total
스노우보드 참 좋아하는데 맨날 키보드 앞에만 있네
[ORACLE] 조회된 ROW가 없을 때, RETURN 하는 방법 본문
오라클 환경에서 조회되는 ROW가 없을 때, RETURN 하는 방법
( Return row if no data found in Oracle )
일반적으로 조회 시 조건절에 부합하는 데이터 ROW가 없을 경우에는 조회되지 않는다.
그러나 JOIN 등 특수한 경우로 조회되는 ROW가 없더라도 반환시켜야 하는 일이 생긴다.
특정 컬럼만 NULL 인 경우에는 NVL 함수를 이용하면 되지만,
-- NVL(COLUMN, 0) : COLUMN이 NULL 인 경우 0을 반환
ROW 전체가 조회되지 않을 경우에는 어떻게 처리해야 할까?
[방법 1] UNION 과 NOT EXISTS 의 활용
SELECT COLUMN_NAME
FROM TABLE_NAME
WHERE KEY_VALUE = :KEY
UNION ALL
SELECT NULL AS COLUMN_NAME
FROM DUAL
WHERE NOT EXISTS ( SELECT COLUMN_NAME
FROM TABLE_NAME
WHERE KEY_VALUE = :KEY )
위 방법은 간단하고, 명료하다.
조건절로 조회되는 ROW의 유무에 따라 UNION 상단 혹은 하단의 쿼리 결과가 조회된다.
UNION 상단부의 조회 ROW가 없을 경우, 하단부에 ROW가 조회되므로 무조건 하나 이상의 ROW를 RETURN 한다.
위 방법으로 조회 시, 소요시간이 오래될 경우 아래의 방법을 사용한다.
[방법 2] UNION 과 ROWNUM 의 활용
SELECT *
FROM ( SELECT COLUMN_NAME
FROM TABLE_NAME
WHERE KEY_VALUE = :KEY
UNION ALL
SELECT NULL AS COLUMN_NAME
FROM DUAL )
WHERE COLUMN_NAME IS NOT NULL OR ROWNUM = 1
UNION 사용은 동일하나, 방법 1에 비해 조회 시 태우는 총 INDEX가 더 적어 조회 시간이 조금 더 빠르다.
UNION 하단절의 조회결과는 NULL값 컬럼을 포함한 ROW로 UNION 상단이 NULL일때만 RETURN 된다.
[방법 3] GROUP 함수의 활용
SELECT MAX(COLUMN_NAME) COLUMN_NAME
FROM TABLE_NAME
WHERE KEY_VALUE = :KEY
조회 결과의 쓰임이 단일 ROW 거나 GROUP BY가 가능한 경우에는 GROUP 함수를 적극 활용한다.
MAX, MIN, SUM 등의 함수는 반환 ROW가 없을 경우에도 NULL을 반환한다.
끝.
'개발 > Oracle SQL' 카테고리의 다른 글
[ORACLE] 다중 ROW를 그룹화하여 하나의 컬럼으로 조회하기 (LISTAGG WITHIN GROUP 함수) (0) | 2019.12.17 |
---|---|
ORACLE Synonym (0) | 2018.07.18 |
ORACLE XE에서 8080 포트번호 변경방법, 톰캣 충돌 시 해결방법 (1) | 2018.06.19 |
데이터베이스 정규화 (0) | 2018.06.01 |
Mac OS에서 인코딩 UTF-8 설정하기 (한글 깨질 때 해결방법) (0) | 2017.12.04 |
Comments