首页 > 解决方案 > 如何在选择中紧凑地使用多个或

问题描述

说我有一张桌子

tbl:([]a:`XXY`XXZ`XZZ`XYZ)

q)tbl
a  
---
XXY
XXZ
XZZ
XYZ

我想选择像“ XX ”或“ ZZ ”这样的行

有没有比写作更紧凑的方式

select from tbl where (a like "*XX*")|(a like "*ZZ*")

理想情况下,我想将所有我的或选项存储在一个变量中,然后将其传递给选择。

我尝试过使用功能选择,但只能使其适用于单个或并且仅适用于以下形式。

q)c:(like;`a;enlist "*XX*")
::
q)?[tbl;enlist c;0b;()]
a  
---
XXY
XXZ

我可以创建一个表或列表,然后将其传递给 c,而不是在 c 中设置 enlist“ XX ”吗?

谢谢

标签: kdb

解决方案


最常见的方法是

q)select from tbl where any a like/:("*XX*";"*ZZ*")
a
---
XXY
XXZ
XZZ

推荐阅读