iif

语法

iif(cond, trueResult, falseResult)

参数

cond 可以是布尔常量或表达式或一个返回布尔值的函数。

trueResultfalseResult 可以是任意数据或函数。

详情

iif 是元素级的条件运算符。通常 cond 是一个条件向量。如果 cond[i] 为 true,它返回 trueResult(cond[i]);否则它返回 falseResult(cond[i])。 当cond[i]为NULL值时,返回的结果也是NULL值。

例子

$ iif(true true true false false false, 1..6, 6..1);
[1,2,3,3,2,1]

$ iif(1..6==3, 1, 2);
[2,2,1,2,2,2]

$ x=9 6 8;
$ def wage(const x){return iif(x<=8, 10*x, 20*x-80)};
$ wage(x);
[100,60,80]

$ t=table(1..5 as id, 11..15 as x);
$ t1=table(take(12,5) as a, take(14,5) as b);
$ t;

id

x

1

11

2

12

3

13

4

14

5

15

$ t1;

a

b

12

14

12

14

12

14

12

14

12

14

$ update t set x=iif(x<t1.a, t1.a, iif(x>t1.b,t1.b, x));
$ t;

id

x

1

12

2

12

3

13

4

14

5

14

当配置了nullAsMinValueForComparison=true时,在比较运算中,NULL元素取相应数据类型的最小值。使用 nullCompare 可以保持iif条件表语句里的NULL值。

$ a = NULL 1 3 5
$ iif(a > 0, a, 0)
[0, 1, 3, 5]
$ iif(nullCompare(>,a,0), a, 0)
[ , 1, 3, 5]