首页 > 解决方案 > 表中的更新字段定义为符号列表

问题描述

我有下表:

q)t:([]col:`a`b`c; vals:((`abc`def);(enlist `abc);(`$())))

q)t
col vals       
---------------
a   `abc`def   
b   ,`abc      
c   `symbol$()

我想更新 where 条目col=c,即空符号列表,但`length在尝试以下查询时出现错误:

update vals:(enlist `unknown) from t where 0=count each vals

然后的目标是做一个ungroup t并且不丢失数据 where vals=`symbol$(),因为目前 ungroup 让我丢失了一些行。

标签: symbolskdb

解决方案


要将列中的空符号列表替换vals为“未知”,您可以使用以下内容:

q)t:([]col:`a`b`c; vals:((`abc`def);(enlist `abc);(`$())))
q)t:6#t
update vals:count[i]#enlist enlist `unknown from t where 0=count each vals

输出:

col vals
-------------
a   `abc`def
b   ,`abc
c   ,`unknown
a   `abc`def
b   ,`abc
c   ,`unknown

它使用您的方法来查找val计数为 0 的值。

或者,您可以使用类似的东西:

update vals:{$[x~`symbol$();enlist `unknown;x]}'[vals] from t

与第一个示例相同的输出:

col vals
-------------
a   `abc`def
b   ,`abc
c   ,`unknown
a   `abc`def
b   ,`abc
c   ,`unknown

这种方法只是检查 的值是否val为空,并相应地val用 `unknown 替换它的值。


推荐阅读