Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在带有where子句的查询中返回空记录?_Sql_Sql Server_Tsql - Fatal编程技术网

Sql 如何在带有where子句的查询中返回空记录?

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 我理解空值以及为什么它会这样,但为了方便起

我使用的是SQL Server 2016,我为新手最终用户设置了一个视图。 首先,假设有一个如下表:

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