가변조건 처리(전체, 일부)를 하라는 교육과제를 받아서
전체 가변조건 처리에 대한 쿼리를 아래와 같이 작성했습니다
select *
from test
where test_date = case when :param is null then test_date else :param end
실행해보니 예상대로 :param 값을 입력하지 않으니 그냥 테이블의 모든 값이 출력 되었습니다
그런데 쿼리를 아래와 같이
select *
from test
where test_date = case :param when null then test_date else :param end
바꿔보니, :param 값을 입력하지 않으니 아무것도 출력이 되지를 않네요
무슨차이로 그렇게 되는건가요?
제가 이해하기로는 case :param when null 로 바꿔도 동일하게 실행이 되야 맞는게 아닌가 싶은데...