|
|
1
132
您可以通过稍微重新安排查询来实现您想要的。诀窍是
我发现这很有用的一个原因是当使用 ORM 并且您不希望结果值映射到可以为空的类型。如果应用程序认为该值永远不可能为空,那么它可以使周围的事情变得更容易。然后,不必编写代码来处理空异常等。 |
|
|
2
3
仅供参考,对于遇到此消息的人,在cast/convert的外部添加isNull()可能会破坏视图上的优化器。 我们有两个表使用相同的值作为索引键,但具有不同的数值精度类型(我知道很糟糕),我们的视图将它们结合在一起以产生最终的结果。但是我们的中间件代码正在寻找特定的数据类型,视图在返回的列周围有一个convert()。 我注意到,正如OP所做的那样,视图结果的列描述符将其定义为可以为空,我认为它是2个表上的主键/外键;为什么要将结果定义为可以为空? 我找到了这个帖子,把isNull()扔到了列周围,瞧,不能再空了。 问题是,当查询在该列上过滤时,视图的性能会直接下降。 出于某种原因,视图结果列上的一个显式convert()并没有破坏优化器(由于精度不同,它无论如何都必须这样做),但是添加了一个冗余的isNull()包装器,在很大程度上做到了这一点。 |
|
3
0
这是我使用的代码,它将使ID列不为空,而所有其他列都为空。 您必须强制转换bit或varchar列,并将int列与null进行比较。
高温高压 |
|
|
4
-1
在select语句中,您所能做的就是控制数据库引擎作为客户机发送给您的数据。select语句对基础表的结构没有影响。要修改表结构,需要执行alter table语句。
如果,Otoh,您所要做的就是控制视图的输出,那么您所做的就足够了。您的语法将保证视图结果集中hasstatus列的输出实际上 从未 为空。会的。 总是 位值=1或位值=0。别担心对象资源管理器会说什么… |