首页 > 解决方案 > 如何从字段中具有非空值的文件中对记录进行 sql 查询

问题描述

每条记录有 100 个字段,其中只有少数有值,很多是 NULL。如果我想显示具有非 NULL 值的字段的记录,我该怎么做?

例子:

  1. Table1 有 100 个字段,表中的一条记录有 5 个字段有非 NULL 值,95 个 NULL 值。我想显示该记录。

  2. 另一条有 100 个字段 NULL 的记录,我不想显示该记录。

标签: sqlsql-servercountwhere-clausesql-null

解决方案


您需要并非所有列都存在的记录null。您将需要枚举列名。最简单的解决方案是冗长的where子句,例如:

select *
from mytable 
where col1 is not null or col2 is not null or ... or colN is not null;

另一种方法是横向连接:

select t.*
from mytable
cross apply (
    select count(col) cnt
    from (values (col1), (col2), ... (colN)) as x(col)
) x
where x.cnt > 0

请注意,第二种解决方案要求所有列都具有相同的数据类型 - 否则,可能需要额外的转换。


推荐阅读