如何在单个语句中多次查询 kdb table 中的同一列?

How can I query the same column in a kdb table multiple times in a single statement?

我在 kdb 中有以下 table...

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.*"

和下面的函数解析 table...

的每一行
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]

的查询中

我想做的是将第一个 "single A" 与第一个 "group of 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 中有什么方法可以做到这一点吗?本质上,select from t where sym like (enlist "A";"A[0-9/A-D]*")

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

为了匹配多个正则表达式,我们可以执行以下操作

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