SQL Server 2016 - 使用存储过程从 table 获取 NULL 值

SQL Server 2016 - Get NULL values from a table using a Stored Procedure

我正在尝试使用名为 GetCompanies 的存储过程和名为 @ShowCompaniesWithoutClients 的参数来显示所有公司(来自名为 Company 的 table),其中Client 列是 NULL 或空的 ('')。

目前我找到的解决方案是制作一个 IF/ELSE 语句,其中验证 IF @ShowCompaniesWithoutClients=1 我命令

SELECT *  
FROM [Company] 
WHERE [Client] IS NULL OR [Client] = ''

否则,select 所有列(无限制)。

谁能帮我重构这个解决方案,用不需要 SELECT 声明两次的解决方案替换它?

免责声明:这只是实际应用的示例,我有大约 20 列和更多参数。

所以 @ShowCompaniesWithoutClients as bit 可以有 3 个可能的值,0、1 和 null。 0 和 1 很清楚,但是当您传递 @ShowCompaniesWithoutClients = null 时,意味着应该返回所有内容,这是您可以如何做到的:

SELECT * 
FROM [Company] 
WHERE  (ISNULL([Client],'') = ''  and @ShowCompaniesWithoutClients  = 1)
    OR (ISNULL([Client],'') <> '' and @ShowCompaniesWithoutClients  = 0)
    OR (@ShowCompaniesWithoutClients IS NULL)