반응형
SQL 문에서 파라미터가 null 로 넘어올 경우 해당 조건을 쿼리문에서 제외하려면 어떻게 해야할까?
아래의 쿼리문에서 iDEPARTMENT 가 NULL 로 넘어올 경우 해당 조건이 NULL 인 TEST_TABLE 의 결과만 나오게 된다. 그러면 DEPARTMENT 를 같이 넘길때만 검색조건으로 추가하고 싶을 경우가 있을 것이다.
-- iNAME, iDEPARTMENT
SELECT *
FROM TEST_TABLE
WHERE NAME = iNAME
AND DEPARTMENT = iDEPARTMENT
검색조건으로 iDEPARTMENT 를 넘길 경우, 검색조건에 문자를 입력하지 않으면 NULL 로 넘어간다.
이때 쿼리문에 NULL 로 넘어올 경우에 대한 처리문을 추가해주면 된다.
-- iNAME, iDEPARTMENT
SELECT *
FROM TEST_TABLE
WHERE NAME = iNAME
AND (IFNULL(iDEPARTMENT,'') = '' OR DEPARTMENT = iDEPARTMENT)
작성 시 유의해야할 점은 해당 OR 조건문을 괄호로 감싸야 한다는 것이다. (안 감싸면 AND 와 OR 따로 조건을 인식함)
또한, IFNULL 로 가공하는 것은 파라미터로 넘어오는 값이어야 한다. (DB 속 데이터는 웬만해서 가공하지 않는게 좋다고 함)
끝 ~~
반응형