2013-06-12 2 views
0

I 올바른 결과를 반환하지 않는 질의를 가지고잘못된 결과 조회

SELECT t.GroupName AS GroupName, t.ApplicationName AS ApplicationName, t.UserName 
     FROM UserApplication t 
     WHERE (@ApplicationName IS NULL OR @ApplicationName = '' OR t.ApplicationName = @ApplicationName) AND 
       (@UserName IS NULL OR @UserName = '' OR t.UserName= @UserName); 

테이블 구조 :

CREATE TABLE userapplication 
      (`ID` INT, 
      `ApplicationName` VARCHAR(100), 
      `GroupName` VARCHAR(100), 
      `UserName` VARCHAR(100)) 

난이 모든 행을 표시 한 후 매개 변수 값을 전달하지 테이블 동안 어떤 값을 @ApplicationName 또는 @UserName 매개 변수에 전달하면 동일한 결과가 나타납니다. 쿼리가 작동 사용자 변수의

+0

세 번째 줄, where clausal에서'@ ApplicationNamee'을 두 번'ee'와 함께 입력하면 틀리게 보입니다! – stUrb

+0

미안하지만 실수라고 잘못 입력 했으니까요. –

+1

값을 파라미터로 전달하는 방법을 보여주세요. – peterm

답변

1

올바르게 설정하면 값을 도와주세요 잘

SET @ApplicationName = 'App 1'; 
SET @UserName = ''; 

SELECT t.GroupName, 
     t.ApplicationName, 
     t.UserName 
    FROM UserApplication t 
WHERE (COALESCE(@ApplicationName, '') = '' 
    OR t.ApplicationName = @ApplicationName) 
    AND (COALESCE(@UserName, '') = '' 
    OR t.UserName= @UserName); 

그것은 다음

SQLFiddle 데모 쿼리의 조금 더 간결 버전입니다 것

+0

감사합니다 peterm 자사의 쿼리 창에서 작업하지만 내 보고서 쿼리 창에서 SET로 시작으로 작동하지 않습니다. 거기에 하나의 SELECT 문을 통해서만 할 수있는 모든 솔루션입니다 ... –