繁体   English   中英

SQL 服务器 2016 - 使用存储过程从表中获取 NULL 值

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

我正在尝试使用一个名为@ShowCompaniesWithoutClients GetCompanies参数来显示所有公司(来自名为Company的表),其中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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM