我想从表中排除一些记录。
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
时,您将为每个字符串获得一个数组(数组的大小是正则表达式的数量)。我们想看看我们的字符串是否匹配任何正则表达式,如果匹配,则排除它们。