首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL的FIND_IN_SET()的Django等效物

问MySQL的FIND_IN_SET()的Django等效物
EN

Stack Overflow用户
提问于 2011-11-29 22:04:11
回答 3查看 1.5K关注 0票数 2

在一个遗留的MySQL数据库中,我有一个表,其中的一个字段是以逗号分隔的值列表:

代码语言:javascript
复制
id  | field
---------------
1   | 2,4,8
2   | 1,4,15,24

以下查询的Django等价物是什么?

代码语言:javascript
复制
SELECT * FROM `table_name` WHERE FIND_IN_SET(15, field)

假设Django将此字段视为常规CharField。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-11-29 22:14:47

对于那些习惯的东西,我认为你可能会被extra()卡住

示例:

代码语言:javascript
复制
# Warning, MySQL specific query ahead!
Model.objects.extra(where=['FIND_IN_SET(15, field)'])
票数 6
EN

Stack Overflow用户

发布于 2011-11-29 22:14:07

根本就没有。而且不应该有这样的问题。这是一个特别非标准的MySQL函数,Django并不关心特定于db的行为。使用自定义SQL。

票数 3
EN

Stack Overflow用户

发布于 2019-06-27 21:45:57

使用extra()方法作为最后的手段。根据Django文档,extra()方法可以在任何时候被弃用。

在Django中最好使用regex。

示例:

  • Model.objects.filter(field__iregex = r'(24),?')

上面的QuerySet将检查字段列中的数字'24‘,如果逗号后面跟着数字(24,25)或只有数字(12,24),也会匹配。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8312039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档