当前位置: 首页 > 面试题库 >

优化多列的空检查方式

董砚
2023-03-14
问题内容

假设我有一个包含三列的表,并且我想采用其中至少一个列值不为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值:

  1. COALESCE(col1, col2, col3) IS NOT NULL
  2. col1 IS NOT NULL OR col2 IS NOT NULL OR col3 IS NOT NULL
  3. ISNULL(col1, ISNULL(col2, ISNULL(col3, NULL))) IS NOT NULL

您可以使用Microsoft SQL Server Management Studio来比较多个查询。

比较结果:

  • COALESCE对比IS NOT NULL:57%至43%
  • COALESCEISNULL:56%至44%
  • IS NOT NULLISNULL:49%至51%

因此,使用IS NOT NULL最快的方法来检查行是否具有不带NULL值的列。在可读性的情况下,COALESCE可以比aIS NOT NULLISNULL比较短得多。您可以在可读性和速度之间做出选择。



 类似资料:
  • 我目前正在建立一个不和谐验证机器人,这个机器人的一个功能,如果检查你是否有一个角色从每一个需要的类别,然后在最后产生你的角色的总结。目前,我有一个工作解决方案,它的功能完全符合我的要求,但它使用了一个很大的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#简化吗。