mysql - Django中的SQL instr等价物
问题描述
我想检查给定的文本是否包含在 db 中的子字符串中,
例如:-要搜索的字符串- “我的名字是 john”
db/column_name 中的字符串- “john”。
SQL查询
select * from `demo` where instr('my name is john','column_name') > 0
上述查询的 Django 等效项是什么?
注意- 实际字符串非常大,大约 255 个字符,所以我不能使用正则表达式来提取字符串,因为输入是动态的。
解决方案
您将首先使用annotate
将您的字符串注释到查询中,然后在其上使用 contains
查找 [Django docs]来查找它是否包含给定的列:
from django.db.models import CharField, F, Q, Value
queryset = TestModel.objects.annotate(
search_text=Value('my name is john', output_field=CharField())
).filter(
Q(search_text__contains=F('column_name')) & Q(search_text__contains=F('second_column_name'))
)
推荐阅读
- uicollectionview - 使用相机胶卷中的图像填充 UICollectionView
- php - 基于日期组的查询计数按类型 - Laravel
- c# - ASP.NET Web API 错误,尝试在控制器中分配接口后
- javascript - setInterval() 不更新变量
- python-3.x - ModuleNotFoundError:执行 TimerTrigger 时没有名为“请求”的模块
- javascript - 如何在 JavaScript 中通过单击(按钮)来循环单击数组?
- woocommerce - 支付网关未触发 woocommerce_payment_complete 和 woocommerce_after_checkout_validation 挂钩
- python - 使用固定宽度拆分字符串类型的 Pandas 列(类似于具有固定宽度的 Excel 文本到列功能)
- javascript - NPM 和 Yarn 锁定文件
- python - 为什么python不能从pypi下载最新版本的包?