입력받은 값이 비어있으면 WHERE 조건을 수행할 필요가 없고, 반대의 경우 WHERE 조건을 수행하는 프로시저를 작성해야 했다.
IF @입력받은 값 <> '' -- 입력받은 값이 있을 경우
수행할 쿼리(WHERE 조건 O)
ELSE -- 입력받은 값이 비어있을 경우
수행할 쿼리(WHERE 조건 X)
처음에 위와 같이 작성하였으나, @입력받은 값이 하나가 아니라면 중복 쿼리가 발생함에 따라 길어지고, 가독성이 떨어진다.
IF @값1 <> ''
IF @값2 <> ''
수행할 쿼리(값1 : WHERE 조건 O / 값2 : WHERE 조건 O)
ELSE
수행할 쿼리(값1 : WHERE 조건 O / 값2 : WHERE 조건 X)
ELSE
IF @값2 <> ''
수행할 쿼리(값1 : WHERE 조건 X / 값2 : WHERE 조건 O)
ELSE
수행할 쿼리(값1 : WHERE 조건 X / 값2 : WHERE 조건 X)
.
.
.
WHERE (@입력받은 값 = '' OR 컬럼 = @입력받은 값)
값이 비어있다면 WHERE 조건을 수행하지 않고, 값이 있다면 WHERE 조건을 수행한다.
SELECT * FROM 테이블
WHERE (@입력받은 값 = '' OR 컬럼 = @입력받은 값)