代码之家  ›  专栏  ›  技术社区  ›  Arnkrishn

有没有更好的方法来确定表中的列是否为空?

  •  0
  • Arnkrishn  · 技术社区  · 17 年前

    我在SQLServer2005数据库中有一个表,比如T,它有两列,比如a和B,这两列中通常没有任何值。 如何检查A和B是否为空(具有所有零长度字符串)?

    select count(*) as A_count from T where A <> ''
    

    让我们假设一个数据类型为varchar。

    我想知道我是否可以使用系统表获得相同的信息,如果可以,这会比这个查询更快吗?

    干杯

    3 回复  |  直到 17 年前
        1
  •  2
  •   D'Arcy Rittich    17 年前

    你的方法基本上是正确的,尽管你问题中的措辞不准确。empty包含NULL还是长度非零的空字符串?

    您可以通过以下方式处理这些情况:

    select count(*) as A_count from T where isnull(rtrim(ltrim(A)), '') <> ''
    

    另外,确保A列上有索引。

        2
  •  0
  •   dpmattingly    17 年前

    select count(*) as A_count from T where LEN(A) > 0
    

    但是请记住,如果A可以为null,那么这些行将不会被LEN(A)>0或LEN(A)=0,在这种情况下,您必须将ISNULL包装在A周围。

        3
  •  0
  •   A-K    17 年前

    从T中选择count(*),其中COALESCE(A.)<>''

    否则,将不计算空值。

    推荐文章