🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

JoinQuant 聚宽平台 Query 查询 Like 模糊匹配使用指南

joinquant | 发布时间: 2026/6/1
以下内容由 EasyQuant 生成。

问题描述

query的过虑条件link怎么用呀?

option_data=query(opt.OPT_CONTRACT_INFO).filter(opt.OPT_CONTRACT_INFO.underlying_name.link('%白糖%'))

这样老是报错,我要用underlying_name中包含'白糖'的所有记录!

解决方案

您好!您在代码中遇到的报错是因为拼写错误。在 JoinQuant(聚宽)底层的 SQLAlchemy 查询语法中,用于模糊匹配的方法是 like,而不是 link

正确的代码写法

您只需要将代码中的 .link 改为 .like 即可正确执行包含“白糖”的模糊查询:

# 正确的写法:使用 like 而不是 link
option_data = query(
    opt.OPT_CONTRACT_INFO
).filter(
    opt.OPT_CONTRACT_INFO.underlying_name.like('%白糖%')
)

# 然后使用对应的 run_query 方法获取数据(假设 opt 是您导入的期权库)
# df = opt.run_query(option_data)

关于 like 模糊匹配的用法说明

filter 条件中使用 .like() 时,它的用法与 SQL 中的 LIKE 关键字完全一致,主要通过 %_ 作为通配符:

  1. % (百分号):代表任意长度的任意字符(包括零个字符)。

    • like('%白糖%'):表示字符串中只要包含“白糖”即可(例如:“白糖期权”、“优质白糖”、“白糖”都会被匹配)。
    • like('白糖%'):表示以“白糖”开头
    • like('%白糖'):表示以“白糖”结尾
  2. _ (下划线):代表单个任意字符。

    • like('白糖_'):表示以“白糖”开头,且后面只能跟一个字符(例如:“白糖A”匹配,“白糖AB”不匹配)。

总结

在聚宽的 query 过滤条件中,进行字符串包含查询请务必使用 .like('%关键字%')。修改拼写后您的代码就可以正常获取所有标的名称中包含“白糖”的期权合约记录了!