如何解决如何使用where子句在查询中返回NULL记录?
我正在使用sql Server 2016,并且为新手最终用户提供了视图设置。 首先,假设有一个如下表:
id number
=========
1 2
2 4
3 6
4 NULL
5 12
如果用户对视图进行查询,例如select * from view1 where number <> 12
,则该视图将设置为使用coalesce(number,-99)
返回NULL值-99:
Result of 'select * from view1 where number <> 12':
id number
=========
1 2
2 4
3 6
4 -99
无论如何,视图是否都将返回NULL而不是-99(或任何值),而最终用户不必在查询中包含... or where is null
?
我了解NULL以及为什么会这样,但是为了方便起见,我希望这些最终用户不必这样做。
解决方法
否。
您能做的最好的就是修复结果,以便将-99
解码为NULL
:
SELECT id,CASE WHEN number = -99 THEN NULL ELSE number END AS number
FROM view1
WHERE number != 12
我认为这违背了不向最终用户公开NULL
值的目的,或者通过使用NULL
将OR number IS NULL
视为有效数据来接近数据。
/ p>
,尝试一下:
select * from view1 where number <> 12 or number is null
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。