如何在kdb中排除字符串中的一些记录?



我想从表中排除一些记录。

a:("abc*";"eeee*")
tab:([]cola:("abcdef";"bcdefgh";"tttttt");colb:`a`b`c)

如果我只想要某些记录,它可以工作:如:

raze {select from tab where cola like x } each a

输出:

cola     colb
-------------
"abcdef" a

现在我想通过运行以下命令

来排除上面的记录
raze {select from tab where not cola like x } each a

但是它返回

cola      colb
--------------
"bcdefgh" b
"tttttt"  c
"abcdef"  a
"bcdefgh" b
"tttttt"  c

我想让它返回这个:

cola      colb
--------------
"bcdefgh" b
"tttttt"  c

这样行吗?

q)select from tab where not any cola like/: a
cola      colb
--------------
"bcdefgh" b   
"tttttt"  c   

编辑:为什么我们需要一个any?如果使用列名对表进行索引以获得作为数组的列,则更容易看到:

q)tab[`cola]
"abcdef"
"bcdefgh"
"tttttt"
q)tab[`cola] like/: a
100b
000b
q)any tab[`cola] like/: a
100b
q)not any tab[`cola] like/: a
011b

当您对多个字符串和多个正则表达式使用like时,您将为每个字符串获得一个数组(数组的大小是正则表达式的数量)。我们想看看我们的字符串是否匹配任何正则表达式,如果匹配,则排除它们。

最新更新