데이터베이스 개발자 질문과 답변 게시판
데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.
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 + ' '''''