在KDB中的列表比较期间,Equal not抛出错误

在KDB中的列表比较期间,Equal not抛出错误,kdb,Kdb,我有一张桌子 t:([] s:`GOOG`APPL;d:2?.z.d ;t:2?.z.t) 选择单个记录时,我将使用=: q)select from t where s=`GOOG s d t ---------------------------- GOOG 2017.01.25 04:30:47.898 但是,我希望在使用“=”选择多个记录时出现错误,因为我应该使用“in”,但它返回的是正确的数据,而不是抛出任何错误: q)select fr

我有一张桌子

t:([] s:`GOOG`APPL;d:2?.z.d ;t:2?.z.t)
选择单个记录时,我将使用=:

q)select from t where s=`GOOG
s    d          t           
----------------------------
GOOG 2017.01.25 04:30:47.898
但是,我希望在使用“=”选择多个记录时出现错误,因为我应该使用“in”,但它返回的是正确的数据,而不是抛出任何错误:

q)select from t where s=`GOOG`APPL
s    d          t           
----------------------------
GOOG 2017.01.25 04:30:47.898
APPL 2007.12.27 04:07:38.923

在第一种情况下,将向量与原子进行比较
=
对于该操作是重载的,因此它会将向量中的每个元素与该原子进行比较

q)t[`s]
`GOOG`APPL

q)t[`s]=`GOOG
10b
在第二种情况下,您预期会出现错误,
=
正在进行向量到向量的比较由于两个向量的长度相同,因此它可以工作并且不会抛出
长度
错误

q)t[`s]=`GOOG`APPL
11b
由于逐元素比较,更改顺序不会返回任何内容:

q)t[`s]=`APPL`GOOG
00b
e、 g.下表包含3个要素

t:([] s:`GOOG`APPL`HP;d:3?.z.d ;t:3?.z.t)
q)t[`s]
`GOOG`APPL`HP
你会得到一个
长度
错误

q)t[`s]=`GOOG`APPL
'length
因此,在
中使用
将修复错误

q)t[`s] in `GOOG`APPL
110b