Sql 如何在带有where子句的查询中返回空记录?
我使用的是SQL Server 2016,我为新手最终用户设置了一个视图。 首先,假设有一个如下表:Sql 如何在带有where子句的查询中返回空记录?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我使用的是SQL Server 2016,我为新手最终用户设置了一个视图。 首先,假设有一个如下表: id number ========= 1 2 2 4 3 6 4 NULL 5 12 如果用户对视图进行查询,例如,从view1中选择*其中编号12,则视图将设置为使用coalescenumber,-99返回空值作为-99: 有没有让视图返回NULL而不是-99或任何值,而最终用户不必包括。。。或者在他们的查询中哪里是null 我理解空值以及为什么它会这样,但为了方便起
id number
=========
1 2
2 4
3 6
4 NULL
5 12
如果用户对视图进行查询,例如,从view1中选择*其中编号12,则视图将设置为使用coalescenumber,-99返回空值作为-99:
有没有让视图返回NULL而不是-99或任何值,而最终用户不必包括。。。或者在他们的查询中哪里是null
我理解空值以及为什么它会这样,但为了方便起见,我希望这些最终用户不必这样做。试试这个:
select * from view1 where number <> 12 or number is null
没有
您所能做的最好是修复结果,使其将-99解码为空:
我认为这违背了不向最终用户公开空值的目的,或者通过将空值视为有效数据、使用或数字为空来处理数据。问题明确指出,最终用户不必包括。。。或者在他们的查询中where为null。这里有一篇关于为什么你所要求的不能实现的文章。
select * from view1 where number <> 12 or number is null
SELECT id, CASE WHEN number = -99 THEN NULL ELSE number END AS number
FROM view1
WHERE number != 12