如何处理KDB中包含减号的符号?

时间:2016-11-04 21:26:15

标签: symbols kdb q-lang q-query

我遇到了一个恼人的问题。我们在kdb +数据库中得到了股票代码AGN-A,但似乎几乎不可能查询该符号是否在符号列表中。以下查询根本不起作用:

`$"A-o" in (`$"A-o";`R)

知道如何解决这个问题吗?

4 个答案:

答案 0 :(得分:3)

不起作用的原因是因为你在施法前的比较。您需要先进行投射然后进行比较:

q)(`$"A-o") in (`$"A-o";`R)
1b

答案 1 :(得分:2)

初始sym cast` $正在应用于整行,而不仅仅是“A-o”字符串。 q是左边的。 括号是你的答案。

q)`$"A-o" in (`$"A-o";`R)
'type
  [0]  <>:0: `$"A-o" in (`$"A-o";`R)
                     ^
q)(`$"A-o") in (`$"A-o";`R)
1b
q)

答案 2 :(得分:1)

尝试在左侧参数周围加上括号,如:

(`$"A-o") in (`$"A-o";`R)

所以,在表格中,尝试:

t:([] sym:(`$"A-o";`R;`IBM); col2:1 2 3)
select from t where sym = `$"A-o"

答案 3 :(得分:0)

其他答案涵盖了如何使用括号修复执行顺序。但是,可以处理没有字符的符号,例如&#34; - &#34;通过使用函数.Q.id来清除坏字符,因此不需要转换:

q).Q.id each (`$"A-o";`R)
`Ao`R

将上面的例子简化为:

q)`Ao in .Q.id each (`$"A-o";`R)
1b