我试图了解如何根据当前状态更改表中的值。目前,isSelected 列是 0 或 1,我想将其值更改为另一个,但我不知道如何在 kdb/q 中执行此操作。
这是我试图在伪代码中执行的操作:
fChangeBit[table]:
if table[rowToFlip][isSelected] == 0:
set table[rowToFlip][isSelected] = 1;
else if table[rowToFlip][isSelected] == 1:
set table[rowToFlip][isSelected] = 0;
return table;
有什么方法可以在 q 中执行 if/else if/else 吗?
你可以使用?向量条件运算符:https://code.kx.com/q/ref/vector-conditional/
在这种情况下,您只是翻转 0 和 1,您还可以使用 not 运算符:
您可以使用向量条件运算符https://code.kx.com/q/ref/vector-conditional/这些可以在 qSQL 查询中使用,因此它看起来像:
Updade a:?[a=1;0;1] from table
其中 a 是您要翻转值的列,如果您想就地执行更新,只需在 table 中添加一个前导反引号作为 `table. 您可能还想查看https://code.kx.com/q/ref/cond/了解一些背景知识。