sql - 如何在带有 where 子句的查询中返回 NULL 记录?
问题描述
我正在使用 SQL Server 2016,并且我为新手最终用户设置了视图。首先,假设有一个如下表:
id number
=========
1 2
2 4
3 6
4 NULL
5 12
如果用户对视图进行查询,例如select * from view1 where number <> 12
,则视图设置为使用以下命令返回 NULL 值 -99 coalesce(number,-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
推荐阅读
- tomcat - web.xml 中单个会话配置元素中的多个跟踪模式元素?
- node.js - One of my route.ejs does not show header like all other route
- spring - 为什么 Spring JPA 将有效日期转换为无法识别的格式化字符串?
- laravel - Laravel:如何防止在访问网站时覆盖 .htaccess 代码?
- python - 在 Django 中使用多个数据库,让另一个数据库包含不是由任何模型创建的表
- swift - 如何在 SwiftUI 中创建字符串的大写版本?
- regex - 如何识别单词边界中的德语变音符号?
- python - django:触发下载后重定向到另一个页面
- c++ - 使用二进制参数调用 lua 方法
- java - 为什么我无法访问基类中的重写方法?