[SQLD/P] data 전체조회 1

Hyo Kyun Lee·2022년 11월 16일
0

SQLD/P

목록 보기
43/82

1. 개요

데이터를 전체조회, 예를 들어 입력값을 공란으로 처리하였을때 모든 데이터를 조회한다고 할때 환경에 따라 쿼리 구성 방법이 달라진다.

또한 Where 조건절이 어떻게 반영되는지 어느정도 이해를 하고 있어야, 전체조회를 할 때 어떠한 방식으로 쿼리를 구성해야하는지 윤곽을 정할 수 있다.

2-1. 데이터가 있을때

WHERE 1=1
AND COLUMN_A = DECODE(:column_A, '', COLUMN_A, :column_A)
AND COLUMN_B LIKE '%' || DECODE(:column_A, '', COLUMN_B, :column_B)

여기서 핵심은 COLUMN_A = COLUMN_A의 조건이 성립하도록 구성해주는 것이다.

이 경우, 데이터가 NULL인 record는 조회하지 않는다.

이 부분은 좀 더 봐야하겠으나, WHERE 조건절 자체가 쿼리결과를 바탕으로 결과를 선별한다는 점을 생각하면, 해당 COLUMN_A이 NULL일 경우 NULL = NULL이 되어서 조건절로 아예 보지를 않아서 그런것 같다.

2-2. 데이터가 없을때

WHERE 1=1
AND NVL(COLUMN_A,0) LIKE DECODE(:column_A, '', '%', :column_A)

여기서 핵심은 0 = '%' 의 조건이 성립하도록 구성해주는 것이다.

이 경우, 데이터가 NULL이더라도 NVL에 의해 0으로 세팅되고 0 LIKE '%'의 조건절은 참이 되어서 모든 결과를 전체조회한다.

2-3. Where 조건절

Where 조건절은 이미 연산된 쿼리 결과를 바탕으로 진행한다는 점을 기억한다.

쿼리 연산 -> 그 후에 Where 조건절로 선별
만약 조건절상 COLUMN이 NULL일 경우, NULL인 데이터는 조회하지 않는다.

3. 참고자료

Data가 있을 경우, 없을 경우 각각에 대한 전체 조회 방법 - https://limkydev.tistory.com/159

0개의 댓글