KDB如何在查询中使用$ []

chr*_*ise 1 kdb

如果我有一张桌子

t: flip `a`b`c!(til 10;10?(1b,0b);10?(1b,0b))
Run Code Online (Sandbox Code Playgroud)

我为什么要这样做

update x:?[b;1;?[c;3;0]] from t
Run Code Online (Sandbox Code Playgroud)

但不是

update x:$[b;1;c;3;0] from t
Run Code Online (Sandbox Code Playgroud)

[这会返回排名错误]

b:0b
c:1b
$[b;1;c;3;0]
Run Code Online (Sandbox Code Playgroud)

工作良好?

Tho*_*yth 6

$是仅适用于原子值的标准条件运算符.?矢量条件运算符,适用于原子和矢量条件.

表中的列是向量,因此使用$导致错误的结果而?不是错误.要$与表一起使用,您需要将值单独传递给它,例如:

update x:{$[x;1;y;3;0]}'[b;c] from t
Run Code Online (Sandbox Code Playgroud)