KDB+中如何比较两个Symbol字段并筛选符合条件的行?
解决KDB+中筛选col1值包含在col2中的行的问题
问题原因
你原语句未返回结果的核心问题有两个:
like的用法错误:like要求右侧是带通配符的匹配模式,直接用string col2无法实现子串匹配any的误用:any会将所有行的判断结果聚合为单个布尔值,无法完成逐行的独立判断
正确解法
方法1:用like构造通配符匹配模式
将col1转为字符串后,前后拼接*作为通配符模式,再与col2的字符串进行匹配:
select from tab where string col2 like "*", string col1, "*"
方法2:用instr函数高效判断子串
instr函数可直接返回子串在目标字符串中的起始位置,若返回值大于0则表示子串存在:
select from tab where 0 < instr[string col2; string col1]
执行结果
上述两种方法都会返回符合要求的行:
col1 col2 --------- abc /ee/abc/uuu efd /ee/efd/uuu
内容的提问来源于stack exchange,提问作者Terry
相关产品推荐
相关产品推荐

