2013-03-26 56 views
0

我已經在SQL Server中下面的查詢存儲過程修改加入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值可以是NULLtbl_Location沒有一個NULL字段。這是一個問題,因爲如果@Location = NULL然後我想要CC.LCTN_RSTN= NULL顯示的字段。任何方式我可以做到這一點? (SZ_SK只存在於tbl_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,但轉換爲空字符串,''=''

這裏的基本技術是在實際範圍之外使用標記值。例如,如果LCTN_RSTN是IDENTITY(1,1),則使用-1作爲空值的默認值。

+0

大,不完全是我用,但它讓我在正確的軌道上,因爲我意識到我可以做這樣的事情這工作對我來說:'ISNULL(CC.LCTN_RSTN,@NoneValue )= LR.LCTN_RSTN' – 2013-03-26 18:09:14

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)