一尘不染

SQL Server:检查WHERE子句的变量是否为Empty或NULL

sql

搜索产品列表时,该@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

阅读 132

收藏
2021-03-17

共1个答案

一尘不染

只需使用

如果@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,'') = ''
2021-03-17