SQL CASE表达式返回基于null和非null的多种模式的集合



我有一个任务,它接受一个参数,并有三种模式的结果

示例参数名称为sizePram(1=仅为null,2=仅不为null,3=两者或全部)

declare @sizeParam int
set @sizeParam = 1 or 2 or 3
select * from SalesLT.Product where Size =
CASE @sizeParam
    when 1 then is null
    when 2 then is not null
    when 3 then all
end
select * 
from SalesLT.Product 
where 
    (@sizeParam = 1 and Size is null) or
    (@sizeParam = 2 and Size is not null) or
    (@sizeParam = 3)
SELECT *
    FROM SalesLT.Product
    WHERE (@sizeParam = 1 AND Size IS NULL)
       OR (@sizeParam = 2 AND Size IS NOT NULL)
       OR (@sizeParam = 3)
SELECT *
  FROM SalesLT.Product
 WHERE ( sizeParam <> 1 OR Size IS NULL )
       AND NOT ( sizeParam = 2 AND Size IS NULL );

最新更新