是否有辦法編寫以下腳本,以便在ProductID變量爲空時返回所有產品?並且在產品不爲null時返回特定產品。 我有什麼至今:SQL如果參數爲空,則全選全部否則返回特定項目
DECLARE @productID INT = NULL
SELECT
ProductID,
ProductName,
ProductDesc
FROM
product
WHERE
ProductID = @productID
是否有辦法編寫以下腳本,以便在ProductID變量爲空時返回所有產品?並且在產品不爲null時返回特定產品。 我有什麼至今:SQL如果參數爲空,則全選全部否則返回特定項目
DECLARE @productID INT = NULL
SELECT
ProductID,
ProductName,
ProductDesc
FROM
product
WHERE
ProductID = @productID
使用case語句:
SELECT ProductID, ProductName,ProductDesc
FROM product
WHERE ProductID = CASE WHEN @productID IS NULL THEN ProductID ELSE @productID END
或者IIF()函數,如果你使用SQL Server 2012:
SELECT ProductID, ProductName,ProductDesc
FROM product
WHERE ProductID =IIF(@productID IS NULL, ProductID, @productID)
SELECT
ProductID,
ProductName,
ProductDesc
FROM
product
WHERE
ProductID = CASE WHEN @productID IS NULL THEN ProductID ELSE @productID END
爲什麼不只是:
DECLARE @productID INT = NULL
SELECT ProductID, ProductName,ProductDesc
FROM product
WHERE ProductID = @productID
OR @productID IS NULL;
這裏,demo in SQLFiddle用NULL和@ProductID
+1爲了避免案件陳述 – Oliver
值試試這個
DECLARE @productID INT = NULL
SELECT
ProductID,
ProductName,
ProductDesc
FROM
product
WHERE
ProductID = isnull(@productID,ProductID)
哇不知道2012年它有IIF函數,我真的不能等我公司upgarde到2012 –