问题描述
每条记录有100个字段,只有几个字段具有值,许多字段为NULL。如果我要显示具有非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
请注意,第二种解决方案要求所有列都具有相同的数据类型-否则,可能需要进行其他强制转换。