본문 바로가기
DB/MSsql

정적쿼리에서 Where절 처리

by KalGugSu 2008. 7. 14.

declare @intNum int

set @intNum = 2

select * from 우편물
 where
 ( (@intNum = -1) or (번호 = @intNum) )

-- 코드에서 검색조건으로 넘어온 @intNum

 [번호] 컬럼중 2가 있다면 번호=2 인 컬럼만 출력되고

전체검색일 경우 코드에서 @intNum을 -1로 세팅하여 전체 row가 출력되게 한다.

=====================================================================

SELECT * FROM AAA WHERE state IN (1,2,3) and eDate > case when state = 3 then dateadd(d, -7, GETDATE()) else dateadd(d, -1, eDate) end

=====================================================================

-- @a가 2일때 1이 아닌 모든 값
declare @a varchar(10)
set @a = '2'

select * from
_test
where @a='-1'
 or (case when @a='1' then 1 else 0 end =1 and num=1 )
 or (case when @a='2' then 1 else 0 end =1 and num<>1)

댓글