假设我有一个包含三列的表,并且我想采用其中至少一个列值不为null的所有行,现在我正在使用coalesce()
以下方式进行null检查,并且工作正常
with Test_name AS(
select null as id , null as f_name , null as l_name
union ALL
select 1,'fname1', null
union ALL
select null,null,null
) select tn.* from Test_name tn where coalesce(id,f_name,l_name) is not null
预期的输出,这给了我我的查询
1,'fname1', null
我想知道还有没有更好的方法来执行此null检查
您可以通过三种方式检查行中是否为非NULL值:
COALESCE(col1, col2, col3) IS NOT NULL
col1 IS NOT NULL OR col2 IS NOT NULL OR col3 IS NOT NULL
ISNULL(col1, ISNULL(col2, ISNULL(col3, NULL))) IS NOT NULL
您可以使用Microsoft SQL Server Management Studio来比较多个查询。
比较结果:
COALESCE
对比IS NOT NULL
:57%至43%COALESCE
与ISNULL
:56%至44%IS NOT NULL
与ISNULL
:49%至51%因此,使用IS NOT NULL
最快的方法来检查行是否具有不带NULL值的列。在可读性的情况下,COALESCE
可以比aIS NOT NULL
或ISNULL
比较短得多。您可以在可读性和速度之间做出选择。
我目前正在建立一个不和谐验证机器人,这个机器人的一个功能,如果检查你是否有一个角色从每一个需要的类别,然后在最后产生你的角色的总结。目前,我有一个工作解决方案,它的功能完全符合我的要求,但它使用了一个很大的if堆栈,我对js很陌生,但被告知尽可能不要使用大的if/if else if堆栈。我已经研究了switch的案例,但不知道如何应用这些案例,所以我想知道是否有一种更优化的方法来实现我所需要的。
我在验证函数中有两个字符串变量,它应该确保变量不会同时为null或空(不允许一个为null,另一个等于空)。 当前的IF语句非常复杂,因为我必须检查: 如果两者都为空 它是功能性的,但丑陋,不是“最佳实践”。如何简化?
我有下面的代码,这是有点难看的多个空检查。 所以我尝试使用,如下所示,但是如果有人阅读我的代码,仍然很难理解。 在Java9中,我们可以使用和,但是在Java8中还有其他方法吗?
rank ▲ ✰ vote url 15 789 144 1269 url 检查列表是否为空的最好方法 例如,传递下面: a = [] 我怎么检查a是空值? if not a: print "List is empty" 用隐藏的空列表的布尔值才是最Pythonic的方法.
本文向大家介绍SQL Server多表查询优化方案集锦,包括了SQL Server多表查询优化方案集锦的使用技巧和注意事项,需要的朋友参考一下 SQL Server多表查询的优化方案是本文我们主要要介绍的内容,本文我们给出了优化方案和具体的优化实例,接下来就让我们一起来了解一下这部分内容。 1.执行路径 ORACLE的这个功能大大地提高了SQL的执行性能并节省了内存的使用:我们发现,单表数据的统计
如何简化空检查 我已经实现了以下空条件检查 我正在用空检查条件验证Employee类的所有属性,这可以用C#简化吗。