2013-10-14 16 views
6

Ürüne geri dön Bu özellik, ProductID değişkeni null ise tüm ürünleri döndürecek şekilde yazmanın bir yolu var mı? Ürün null olmadığında belirli bir ürünü iade edin. var bugüne kadar Ne:SQL tüm parametreler boşsa, tümünü seç

DECLARE @productID INT = NULL 

SELECT 
    ProductID, 
    ProductName, 
    ProductDesc 
FROM 
    product 
WHERE 
    ProductID = @productID 

cevap

23

Kullanım durumda beyanı:

SELECT ProductID, ProductName,ProductDesc 
FROM product 
WHERE ProductID =IIF(@productID IS NULL, ProductID, @productID) 
+0

vay hiç 2012 biliyoruz deneyin İçinde IIF işlevi vardı, benim şirket 2012 –

0
SELECT 
    ProductID, 
    ProductName, 
    ProductDesc 
FROM 
    product 
WHERE 
    ProductID = CASE WHEN @productID IS NULL THEN ProductID ELSE @productID END 
10

Neden:

SELECT ProductID, ProductName,ProductDesc 
FROM product 
WHERE ProductID = CASE WHEN @productID IS NULL THEN ProductID ELSE @productID END 

Veya IIF() işlevi, SQL Server 2012 kullanıyorsanız sadece değil:

DECLARE @productID INT = NULL 

SELECT ProductID, ProductName,ProductDesc 
FROM product 
WHERE ProductID = @productID 
OR  @productID IS NULL; 
İşte

NULL ile bir demo in SQLFiddle ve @ProductID

+0

+1 upgarde için sadece sabırsızlanıyorum vaka bildirimini önlemek için – Oliver

5

için bir değer bu

DECLARE @productID INT = NULL 

SELECT 
    ProductID, 
    ProductName, 
    ProductDesc 
FROM 
    product 
WHERE 
    ProductID = isnull(@productID,ProductID)