我遇到了一个恼人的问题。我们在kdb +数据库中得到了股票代码AGN-A,但似乎几乎不可能查询该符号是否在符号列表中。以下查询根本不起作用:
`$"A-o" in (`$"A-o";`R)
知道如何解决这个问题吗?
答案 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