2013-11-27 2 views
0

누구나이 체크를 SQL Server 2008 Null 매개 변수에 쓰는 방법을 말해 줄 수 있습니까? 쿼리 부분 밖에서 대신 SQL 쿼리 내부에 조건문을 작성할 수있는 방법을 알아야합니다. 당신이 당신의 @ 입력 1 곳의 경우 시작한다 사이에 뭔가를 그리워처럼저장 프로 시저에서 null 값을 확인하는 방법

쿼리

DECLARE @SelItm NVARCHAR(max) 
DECLARE @Input1 VARCHAR(100) 
DECLARE @Input2 VARCHAR(100) 

SET selitm = 'Select * from table as tbla where tbla.Id='''[email protected]+ ''' (Case when @Input2 is not null then and tbla.supid='''[email protected]+ 
''' else '''' end)' 

EXEC Sp_executesql 
@SelItm 

답변

0

보인다.

Select * 
from table as tbla 
where tbla.Id='''[email protected]+ ''' **SOMETHING_MISSING_HERE** 
(Case when @Input2 is not null then tbla.supid='''[email protected]+ ''' else '''' end) 

당신이 케이스를 사용하는 경우, 당신은 케이스의 THEN 부분에 무엇이되는 경우의 "반환"(말하자면) 요소가 필요합니다 - 뭔가 비교를. @ 입력 2 null가 아닌 경우, @ 입력 2가 null의 경우 tbla.Id = @Input1supid = @Input2 또는 supid = ''

공지 사항 supid =의 배치 귀하의 예제에 비해 있다는 것을 것을

'Select * 
from table as tbla 
where tbla.Id='''[email protected]+ ''' 
AND tbla.supid= 
    (Case when ''' + @Input2 + ''' is not null then '''[email protected]+ ''' else '''' end)' 

이 확인됩니다 그래서 예를 들면

.

당신이 필요한 라인에 뭔가가 있습니까? 하고 있는지 - 당신은 ISNULL 사용하여 문을 단순화 할 수 있습니다 : 단지 문제를 좀 더 복잡하게,

'Select * from table as tbla 
where tbla.Id='''[email protected]+ ''' AND tbla.supid= ISNULL(''' + @Input2 + ''' , '')' 

그러나을; 그때 당신은 동적 SQL을위한 문자열에 NULL을 추가하려고하는 NULL 문제에 빠지게되고 NULL을 추가하면 NULL이됩니다. 당신은 그래서 때 : 변수가 설정 한 후

DECLARE @Input2 VARCHAR(100) 

다음, 당신이 확인해야 그래서 당신의 예에서 NULL을 확인하는 가장 좋은 장소는 쿼리하기 전에 @ 입력 2 변수를 확인하는 것입니다 NULL 동적 SQL 문에서 사용하기 전에 : 다음

SET @Input2 = ISNULL(@Input2, '') 

그리고 동적 SQL 문에서 변수를 사용합니다.

+0

매개 변수가 null이 아닌 경우 다음과 같이 포함하고 싶으면 where 절에 포함 시키십시오. Pls 내 편집 된 쿼리를 참조하십시오. – DonMax

+0

그런 다음'AND tbla.supId = ISNULL (@ Input2, tlba.supId)' 과 같은 것을 실행하면 동적 SQL 문자열을 실행할 필요가 없습니다. 그것이 null 인 경우 supId는 다른 경우 항상 true 인 supId와 일치합니다.이 경우는 Input2와 비교됩니다. –

+0

내게 적합하지 않습니다. '테이블에서 선택 * tbla 여기서 tbla.Id='''++Input1+' ''AND tbla.supid = ISNULL ('' '+ @ Input2 +' '', tbla.supid) ''. – DonMax

0

나는 당신이 각각의 possible-null 매개 변수에 대해 이와 같은 것을 필요로한다고 생각한다. 먼저 Input1을 선택하자.이 코드가 도움이되기를 바랍니다.

AND (Input1= @Input1 OR (Input1 IS NULL AND @Input1 IS NULL)) 
관련 문제