안녕하세요.
현재 게시판 상세조회 쿼리를 만들고 있는데 생각한대로 잘 안됩니다.
프로시저에 매개변수로 시작일자,종료일자,단어1, 단어2를 전달하는데
시작일자, 종료일자, 단어1, 단어2의 매개변수의 값이 있을 수도 있고 없을 수도 있습니다.
만약 단어1이나 단어2의 값이 null인경우 null값이 검색되는게 아니라 전체 검색이 될수 있도록
검색에서 제외되었으면 좋겠습니다.
어떻게 작성해야 될까요?
답변 부탁드리겠습니다.
CREATE PROCEDURE [dbo].[USP_LIST_SEARCH]
@StartDate VARCHAR(15) = NULL, -- 시작일자 ex) 2020-01-01
@EndDate VARCHAR(15) = NULL, -- 종료일자 ex) 2020-01-10
@Name1 NVARCHAR(100) = NULL, -- 검색할 단어 1 ex) 테스트1
@Name2 NVARCHAR(100) = NULL -- 검색할 단어 2 ex) 테스트2
AS
BEGIN
SELECT *
FROM DrainageWater
WHERE CONVERT(VARCHAR(10), d.CreatedDate, 121)
BETWEEN @StartDate AND @EndDate
OR Name1 = @Name1 OR Name2 = @Name2
END
SELECT * FROM DrainageWater WHERE CreatedDate >= CONVERT(DATE, ISNULL(@StartDate, '1900-01-01'), 121) AND CreatedDate <= CONVERT(DATE, ISNULL(@EndDate , '2100-12-31'), 121) AND ( (@Name1 IS NULL AND @Name2 IS NULL) OR (@Name1 IS NOT NULL AND Name1 = @Name1) OR (@Name2 IS NOT NULL AND Name2 = @Name2) ) ;