IF @Reason = 1
SET @sqlCommand = @sqlCommand + ' AND Reason <> '''''
ELSE IF @Reason = 2
SET @sqlCommand = @sqlCommand + ' AND Reason = '''''
기존에 사용하던 동적 쿼리를 정적쿼리로 변경하려고 하는데
조건열이나 조건값들을 정적쿼리로 변환하는 예제들을 아래와 같이 많이 있던데
SELECT *
FROM dbo.employees
WHERE (CASE @column WHEN 'Last' THEN LastName
WHEN 'First' THEN FirstName
WHEN 'Title' THEN Title
ELSE @value
END) LIKE @value
SELECT *
FROM dbo.employees
WHERE
(CASE @Sign
WHEN '>' THEN BirthDate
WHEN '<' THEN @date END) > (CASE @Sign WHEN '>' THEN @date
WHEN '<' THEN BirthDate END)
조건 연산자를 동적으로 변환하는 예제는 보이지 않아 이렇게 질문 드립니다.
Comment 3
-
악마곰
2015.01.20 16:57
-
가끔보는하늘
2015.01.20 22:09
앗.. 제가 제목을 잘못 달았나 봐요...
제가 사용한게 동적 쿼리인데 이를 정적 쿼리로 변환 하려고 하거든요
제목과 내용 수정할께요 죄송합니다
-
건우아빠
2015.01.21 09:56
declare @Reason integerset @Reason = 0 ;select *from dbo.employeeswhere (case @Reasonwhen 1 thencase when Reason = '' then 1 else 0 endwhen 0 thencase when Reason <> '' then 1 else 0 endend ) = 1
간단하게 수정해 봤습니다.
Declare @A nvarchar(2) = '<>'
Declare @B nvarchar(2) = '='
IF @Reason = 1
SET @sqlCommand = @sqlCommand + ' AND Reason ' + @A + ' '''''
ELSE IF @Reason = 2
SET @sqlCommand = @sqlCommand + ' AND Reason ' + @B + ' '''''