如何从字段中具有非null值的文件中记录sql

问题描述

每条记录有100个字段,只有几个字段具有值,许多字段为NULL。如果我要显示具有非NULL值的字段的记录,该怎么办?

示例:

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

  2. 另一个具有100个字段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

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...