SQLite:如何将含Null值的列名按行单独显示
解决SQLite中按行输出每个ID的Null列名问题
先明确预期输出格式:
| ID | Null_Column |
|---|---|
| 1 | Column B |
| 1 | Column C |
| 2 | Column A |
| 3 | Column A |
| 3 | Column B |
可以通过UNION ALL将列级的Null检查结果拆分为行数据,具体SQL语句如下:
SELECT ID, 'Column A' AS Null_Column FROM TABLE_DEMO WHERE "Column A" IS NULL UNION ALL SELECT ID, 'Column B' AS Null_Column FROM TABLE_DEMO WHERE "Column B" IS NULL UNION ALL SELECT ID, 'Column C' AS Null_Column FROM TABLE_DEMO WHERE "Column C" IS NULL ORDER BY ID;
原理说明
- 对每一列单独执行查询,筛选出该列值为Null的记录,同时指定对应的列名作为结果字段
- 用
UNION ALL将三个查询的结果合并(UNION ALL会保留所有重复行,这里不需要去重) - 最后按ID排序,保证同一ID的Null列名集中展示
之前用Case语句得到逗号分隔结果的原因是:Case是在单条记录内做条件判断,只能将多个Null列名拼接在同一行,无法生成多行结果,而UNION ALL的方式正好满足“每个Null列名单独占一行”的需求。
内容的提问来源于stack exchange,提问作者den
相关产品推荐
相关产品推荐

