如何在KDb +中更改数据类型?

Hir*_*tel 1

我在KDb +中创建了以下表格:

test:([doc_id:`symbol$()];doc_displayid:`symbol$();doc_created_date:`date$();doc_aacess_date:`timestamp$();is_native_exist:`boolean$();file_size:`real$())
Run Code Online (Sandbox Code Playgroud)

现在我想将列的数据类型doc_id从更改symbolint.

如何更改测试表并更改数据类型

Tho*_*yth 6

您需要将列转换为字符串,然后才能将其转换为int:

q)update "I"$string doc_id from test
doc_id| doc_displayid doc_created_date doc_aacess_date is_native_exist file_s..
------| ---------------------------------------------------------------------..
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方法验证新类型meta:

q)meta update "I"$string doc_id from test
c               | t f a
----------------| -----
doc_id          | i
doc_displayid   | s
doc_created_date| d
doc_aacess_date | p
is_native_exist | b
file_size       | e
Run Code Online (Sandbox Code Playgroud)

  • 就像为什么你必须将它转换为字符串一样:kdb中的符号是实习字符串,即所有字符串值的唯一副本存储在全局字典中,符号只是对该字典的引用.因此,当你写"``"我"$`123```时,你实际上想要转换的是一个参考(想想它就像试图改变盒子上的标签,而不是盒子里的东西!)当你写"``"我"$ string`123```你首先得到参考指向的值然后你投了那个(改变框中的内容)希望这有助于 (3认同)