QGIS中含NULL值的两列按规则合并为一列的问题
两列数据整合规则的完整实现方案
直接用CASE WHEN条件判断语句就能搞定所有规则,不用数组方法,核心是精准处理NULL值的比较逻辑(因为NULL和任何值比较结果都是UNKNOWN,不会触发普通的不等判断)。
完整代码示例(以SQL为例)
SELECT Column_A, Column_B, CASE -- 规则1:A、B均非空且值不等时输出'???' WHEN Column_A IS NOT NULL AND Column_B IS NOT NULL AND Column_A != Column_B THEN '???' -- 规则3:A非空、B为NULL时取A值 WHEN Column_A IS NOT NULL AND Column_B IS NULL THEN Column_A -- 规则4:A为NULL、B非空时取B值 WHEN Column_A IS NULL AND Column_B IS NOT NULL THEN Column_B -- 规则2(A=B时取A/B)+规则5(均为NULL时取NULL) ELSE Column_A END AS Column_C FROM your_table_name;
测试结果(匹配你的示例)
| Column A | Column B | Column C |
|---|---|---|
| 1 | 2 | ??? |
| 2 | 2 | 2 |
| 3 | NULL | 3 |
| NULL | 4 | 4 |
| NULL | NULL | NULL |
关键说明
规则1必须先判断Column_A和Column_B都不为NULL,再比较值是否不等——如果直接写Column_A != Column_B,当其中一列是NULL时,这个条件会返回UNKNOWN,不会触发该分支,导致规则1失效。
内容的提问来源于stack exchange,提问作者Arnau
相关产品推荐
相关产品推荐

