2013-03-26 2 views
0

는 내가 SQL 서버에서 다음 쿼리 그래도 문제가 절차를가 참여 SQL 서버

SELECT SZ_SK FROM tbl_Class CC 
INNER JOIN tbl_Location LR ON CC.LCTN_RSTN = LR.LCTN_RSTN 
WHERE LR.LCTN_RSTN = ISNULL(@Location,LR.LCTN_RSTN) 

을 저장 한 수정, 나는 tbl_ClassLCTN_RSTN 값이 NULL 될 수 있다고, tbl_Location가 없습니다 실현 a NULL 필드. 이는 @Location = NULL 인 경우 CC.LCTN_RSTN= NULL 필드가 나타나기를 바라며 문제가됩니다. 내가 할 수있는 어떤 방법이라도? (SZ_SKtbl_Class 존재합니다.)

답변

1

가정 LCTN_RSTN은 문자열이고 어디서든

SELECT SZ_SK FROM tbl_Class CC 
INNER JOIN tbl_Location LR ON ISNULL(CC.LCTN_RSTN, '') = ISNULL(LR.LCTN_RSTN, '') 
WHERE LR.LCTN_RSTN = ISNULL(@Location,LR.LCTN_RSTN) 

이 널 (null)을 결합 할 것입니다 빈 문자열을 사용하지 마십시오. NULL! = NULL이지만 빈 문자열로 변환 ''= ''

기본 기술은 실제 범위 밖의 센티널 값을 사용하는 것입니다. 예를 들어, LCTN_RSTN이 IDENTITY (1,1) 인 경우 널 (NULL)의 기본값으로 -1을 사용하십시오.

+0

좋아요, 내가 사용하지만 난 나를 위해 일하는 같은 것을 할 수있는 실현 이후는 바른 길에 나를 넣어 꽤 무엇 :'ISNULL (CC.LCTN_RSTN, @NoneValue을) = LR.LCTN_RSTN' –

1

보십시오이

SELECT SZ_SK FROM tbl_Class CC 
INNER JOIN tbl_Location LR 
    ON coalesce(CC.LCTN_RSTN,'') = coalesce(LR.LCTN_RSTN,'') 
WHERE (@Location is null) or (coalesce(LR.LCTN_RSTN,'') = @Location)