如何在一条语句中多次查询kdb表中的同一列?

如何在一条语句中多次查询kdb表中的同一列?,kdb,Kdb,我在kdb中有下表 p:([]r:("(A|A(A|B|C|D).*)";"A(E|F|G|H|I).*";"A(J|K|L|M).*";"A(N|O|P|Q|R|S).*";"A(T|U|V|W|X|Y|Z).*";"B.*";"(C|C(A|B|C|D|E).*)";"C(F|G|H|I|J|K).*";"C(L|M|N|O|P|Q|R).*";"C(S|T|U|V|W|X|Y|Z).*";"D.*")) r ---------------------- "(A|A(A|B|C|D).*)"

我在kdb中有下表

p:([]r:("(A|A(A|B|C|D).*)";"A(E|F|G|H|I).*";"A(J|K|L|M).*";"A(N|O|P|Q|R|S).*";"A(T|U|V|W|X|Y|Z).*";"B.*";"(C|C(A|B|C|D|E).*)";"C(F|G|H|I|J|K).*";"C(L|M|N|O|P|Q|R).*";"C(S|T|U|V|W|X|Y|Z).*";"D.*"))
r
----------------------
"(A|A(A|B|C|D).*)"
"A(E|F|G|H|I).*"
"A(J|K|L|M).*"
"A(N|O|P|Q|R|S).*"
"A(T|U|V|W|X|Y|Z).*"
"B.*"
"(C|C(A|B|C|D|E).*)"
"C(F|G|H|I|J|K).*"
"C(L|M|N|O|P|Q|R).*"
"C(S|T|U|V|W|X|Y|Z).*"
"D.*"
下面是解析表中每一行的函数

getRange:{$[x like "*(*";
  [if[x like "(*"; x2:1#1_x; l:enlist x2; x:-1_(3_x)];
  l,:enlist {(3#x),"-",(-3#x)} ssr[ssr[ssr[x;".";""];")";"]"];"(";"["];
  if[((count l)>1)&(l[1] like "*A-*"); l[1]:ssr[l[1]; "A-";"0-9/A-"]];
  :l];
  :enlist ssr[x;".";""]
  ];
 }
这会产生这样的输出

r1:raze getRange'[exec r from p]
q)r1
,"A"
"A[0-9/A-D]*"
"A[E-I]*"
"A[J-M]*"
"A[N-S]*"
"A[T-Z]*"
"B*"
,"C"
"C[0-9/A-E]*"
"C[F-K]*"
"C[L-R]*"
"C[S-Z]*"
"D*"
我正在解析这些行,以便将它们插入类似于
select from t where sym like raze getRange'[exec r from p][0]

我希望能够将第一个“单A”与第一个“A组”相结合,并将其与C相结合(如下所示)。但我遇到的问题是,这些结果不能很容易地插入到查询中

(,"A";"A[0-9/A-D]*")
,"A[E-I]*"
,"A[J-M]*"
,"A[N-S]*"
,"A[T-Z]*"
,"B*"
(,"C";"C[0-9/A-E]*")
,"C[F-K]*"
,"C[L-R]*"
,"C[S-Z]*"
,"D*"
q中有没有一种方法可以让我做到这一点?基本上,
从t中选择sym like(登记“A”;“A[0-9/A-D]*”


如果您需要任何其他信息,请告诉我。提前感谢您。

对于多个regexp的匹配,我们可以执行以下操作

select from t where any sym like/:("A";"A[0-9/A-D]*")