首页 > 解决方案 > 在 KDB 中更改 hdb 中的值

问题描述

我想将 hdb 的一列中的某个值更改为另一个值。我尝试使用 dbmaint 包。但是我遇到了一些类型错误。

这是我的代码

fncol[DB;TBL;`col;{x:ssr[string x;"100";"i"$"0"]}];

我正在尝试将此列中的值 100 更改为 0 为 hdb 中的所有日期。

标签: kdb

解决方案


在您的函数中,您似乎正在尝试用整数值 0 替换 100 的字符串值。您会发现这会很困难,因为如果您的起始列表是字符串列表,kdb 不会让您只更改一些值到不同的类型。

q)l:("a";"b";"c")
q)l[0]:1
'type
  [0]  l[0]:1
           ^
q)l[0]:"d"
q)l
"dbc"

"i"$"0"还将字符串转换为整数类型,而将"I"$"0"“0”内的文本解析为整数值。实际上,这意味着"i"$"0"将变为 48i,因为“0”在 ASCII 中是 48 而不是 0。

如果在收到类型错误并进入调试模式(在 q 提示符处由多个括号表示)之后,您可以使用函数.z.ex.z.ey查看失败的函数和参数,这可能会使调试更容易


推荐阅读