正则表达式左加入 KDB

Regex left join in KDB

在 KDB 中,是否可以使用 "like" 或“~”执行 lj(左连接)以连接 2 tables,其中 1 table 的键匹配另一个 tables 的正则表达式密钥?

不使用开箱即用的工具,但您可以这样做(不会非常高效)

q)t:([]sym:`ACF`ABC`ABD`BA`AAF`AABG`CDE;col1:til 7)

q)t2:([]regex:("*AB*";"AA?";"A*";"C*");col2:4#.Q.A)

q)t,'t2 first each where each t[`sym]like'\:t2[`regex]
sym  col1 regex  col2
---------------------
ACF  0    "A*"   C
ABC  1    "*AB*" A
ABD  2    "*AB*" A
BA   3    ""
AAF  4    "AA?"  B
AABG 5    "*AB*" A
CDE  6    "C*"   D

如果有多个匹配项,此方法将采用第一个匹配的模式。

另一个想法是创建制造密钥并在制造密钥上左连接。