搜索产品列表时,@SearchType参数是可选的。如果@SearchType为空或NULL,则它应返回所有产品,而不使用WHERE子句。否则,如果它传递了Equipment,则将使用它。

ALTER PROCEDURE [dbo].[psProducts]
    (@SearchType varchar(50))
AS
BEGIN
    SET NOCOUNT ON;

    SELECT
        P.[ProductId],
        P.[ProductName],
        P.[ProductPrice],
        P.[Type]
    FROM [Product] P
    -- if @Searchtype is not null then use the where clause
    WHERE p.[Type] = @SearchType
END

最佳答案

只需使用

如果@searchType为null表示“返回整个表”,则使用

WHERE p.[Type] = @SearchType OR @SearchType is NULL

如果@searchType为空字符串,则意味着“返回整个表”,然后使用
WHERE p.[Type] = @SearchType OR @SearchType = ''

如果@searchType为null或空字符串表示“返回整个表”,则使用
WHERE p.[Type] = @SearchType OR Coalesce(@SearchType,'') = ''

关于sql - SQL Server:检查WHERE子句的变量是否为Empty或NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10284164/

10-11 20:18