kdb - KDB:如何使用列表搜索表
问题描述
我有下表 t:
t:([]sym:3#`ibm;time:10:01:01 10:01:04 10:01:08;price:100 101 105;val:("hello";"world";"test"))
如何执行以下查询:
select from t where val in ("hello"; "test")
其中我期待以下结果:
sym time price val
---------------------------
ibm 10:01:01 100 hello
ibm 10:01:08 105 test
解决方案
看起来您的查询确实返回了您需要的结果。
或者,可以使用关键字“喜欢”。
当我们在 select 语句的末尾使用 where 子句时,“where”部分需要一个布尔值来告诉它是否应该选择列。
当我们这样做时where val in "hello"
,它实际上会为它匹配的字符串的每个元素返回一个布尔值(当它没有被包装时):
q)val:"hello"
q)val in "hello"
11111b
因此,要获得返回的单个布尔值,我们使用关键字like
q)val like "hello"
1b
此外,当将字符串列表传递给 where 子句时,应使用“每个正确”副词来指示 where 子句对列表的每个实例进行操作。
q)val like/: ("hello";"test")
10b
但是,当 where 子句需要单个布尔值时,我们再次面临多个布尔值
因此,当出现hello或test时,我们使用关键字any
返回结果。
q)any val like/: ("hello";"test")
1b
我们可以看到,这给出了所需的结果
q)select from t where any val like/: ("hello";"test")
sym time price val
--------------------------
ibm 10:01:01 100 "hello"
ibm 10:01:08 105 "test"
希望这可以帮助
推荐阅读
- math - 为什么我们在深度学习中使用对数概率?
- javascript - 如何使用 NodeJs 在投资 Web 应用程序中操作账户余额?
- css - 在 SCSS 的 for 循环中生成线性渐变
- vba - 1 基于字段值对多个Excel文件的访问查询
- c++ - 在多线程应用程序中使用全局数组
- azure - Powershell 上的 Azure CLI 命令给出 '"c:\\\"Program' 不被识别为内部或外部命令,
- javascript - 如何从纯 JS 访问 Axios?
- python - 如何从现有图在 networkx 中创建随机图?
- makefile - 需要检查 GNUmakefile 中是否存在标志
- django - Django 远程服务器正在运行,但我无法连接到本地 Web 浏览器中的管理界面