将带有特殊字符的字符串插入KDB +

时间:2014-08-06 13:12:21

标签: kdb

我应该使用什么类型在KDB +中创建表并插入带有特殊字符的字符串:空格,#, - 等等 - 看起来像KDB +特别处理所有这些和类似的字符,因为当我创建一个像这个:

t: ([] str: ())

并插入字符串"abc # efgf - ABC.FS #.... TEST TEST" - 包含空格的长字符串, - 和#这样:

`t insert "abc # efgf - ABC.FS #.... TEST            TEST"

KDB返回类型异常。

2 个答案:

答案 0 :(得分:1)

这里的问题并非来自特殊字符,而是来自字符串是字符列表的事实。您需要使用enlist将字符串作为单个元素插入表中。

实际上,这种情况有点不典型,因为表中只有一列,所以实际上你需要使用enlist两次,因为kdb期望列数据作为{{{}中的第二个参数1}}。所以对于这个表使用

insert

如果你有一个包含多个列的表,那么你只需要一个用于该字符串的列表,例如

`t insert enlist enlist "blah blah # # #"

答案 1 :(得分:0)

我不确定为什么在'type出现'length错误时会出现insert错误...

无论如何,q)t:([]a:();b:()) q)`t insert (1;2) / single record matching 2 columns ,0 期望右侧是包含与列数匹配的项目的列表。即。

insert

q)`t insert (2 3;4 5) 1 2 多条记录,右侧将是一个嵌套列表,每个项目都是一个列表。

q)t: ([] str: ())
q)`t insert enlist enlist "abc # efgf - ABC.FS #.... TEST TEST"
,0
q)t
str
-------------------------------------
"abc # efgf - ABC.FS #.... TEST TEST"

因此,在您的情况下,要插入单个字符串记录,您需要一个包含登记字符串的单例列表:

{{1}}