MS Access SQL IIF optimization



给定这个表,我有一个查询,它使用IIF从一列中提取值,而另一列为NULL。

COL_A,COL_B
NULL,10
12,NULL
14,NULL
NULL,16
SELECT iif(COL_A IS NULL, COL_B, COL_A);
Results:
10
12
14
16

我想弄清楚的是如何在纯SQL中实现这一点。有办法做到这一点吗?通常情况下,我不介意使用几次,但我们有一个带有咳嗽86 IIF语句的大型查询,它越来越难以运行。有什么想法吗?

您可以使用NZ()

 select nz(COL_A, COL_B)

如果您的查询需要在一个查询中执行86个不同的测试,那么我建议数据体系结构存在缺陷,您可以使用"Case"方法编写一个自定义函数来缩短SQL,该方法可以逐步完成所有验证并返回结果。然而,这只会改善SQL的外观,不会真正提高性能。没有86个IIF的列表很难说,但我认为您需要查看您的数据结构,看看是否可以从表级别改进。

假设只有一列具有实际值,您可以将它们连接起来,因为null会压缩。选择COL_A||COL_B||COL_C||COL_D||....

最新更新