sql - 如何从字段中具有非空值的文件中对记录进行 sql 查询
问题描述
每条记录有 100 个字段,其中只有少数有值,很多是 NULL。如果我想显示具有非 NULL 值的字段的记录,我该怎么做?
例子:
Table1 有 100 个字段,表中的一条记录有 5 个字段有非 NULL 值,95 个 NULL 值。我想显示该记录。
另一条有 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
请注意,第二种解决方案要求所有列都具有相同的数据类型 - 否则,可能需要额外的转换。
推荐阅读
- xamarin - 1 属性未更新 Xamarin 表单绑定
- python - 使用顺序命名方案动态调用函数
- angular - 属性绑定到服务功能 - 角度
- excel - 使用powershell从excel中选择数据
- node.js - 节点 js 提交文件是否正在 Heroku 上恢复
- angular - Amplify / Cognito:更新用户属性后刷新会话变量(角度)
- java - 否定在 JPA 模式验证器中不起作用
- javascript - Vue.js 如何在将组件加载到模板中之前对其进行配置?
- snowflake-cloud-data-platform - 是否可以在 UDF 中调用 javascript 过程 API?
- java - 将数据插入 Derby 数据库的问题