You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在KDB+/Q的函数式查询中使用带通配符的WHERE子句?

Q语言函数式查询实现带通配符的like匹配

要把qSQL语句 select from table where sym like "temp*" 转换成函数式写法,核心是正确构造where子句的条件,具体写法如下:

?[`table; enlist(like; `sym; "temp*"); 0b; ()]

关键说明:

  • 函数式查询的结构是 ?[表名; 条件列表; 分组标识; 投影列],这里不需要分组和投影,所以后两个参数用0b(不分组)和()(无投影)
  • where条件需要用enlist包装成单元素列表(因为只有一个筛选条件)
  • like操作的第三个参数直接传入带通配符的字符串 "temp*" 即可,通配符*作为字符串的一部分,不需要额外的语法处理

对比你之前的测试代码

你之前运行的 ?[trade; enlist(like;newCol;($:;enlistABC)); 0b; ()] 是用符号(ABC)作为匹配值,而带通配符的场景是字符串匹配,直接传带*的字符串字面量就可以,不需要用$:或者enlist包装符号。

关于你解析的结果

你解析得到的 ,,(';(like;sym);(*;temp)) 是错误的格式,这里的*被当成了操作符,而实际上它应该是匹配字符串的一部分,正确的条件应该是把完整的匹配字符串作为like的第三个参数。

内容的提问来源于stack exchange,提问作者kannic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 21:12:08