这两个函数的文档实际上是相同的。
运行时(在 DBR 13.3 中,但这并不重要):
SELECT
IF(1 = 1, 'a', 'b'), IF(1 = 0, 'a', 'b'),
IFF(1 = 1, 'a', 'b'), IFF(1 = 0, 'a', 'b')
其结果是:
这些操作的行为方式有什么不同吗?
我认为列名已经显示了执行计划的提示。
EXPLAIN
SELECT
IF(1 = 1, 'a', 'b'), IF(1 = 0, 'a', 'b'),
IFF(1 = 1, 'a', 'b'), IFF(1 = 0, 'a', 'b')
结果:
== Physical Plan ==
*(1) Project [a AS (IF((1 = 1), a, b))#9622, b AS (IF((1 = 0), a, b))#9623, a AS (IF((1 = 1), a, b))#9624, b AS (IF((1 = 0), a, b))#9625]
+- *(1) Scan OneRowRelation[]
您可以看到
IF
和 IFF
指的是完全相同的操作:IF
。