【问题标题】:Queries with LIKE (sql) equivalent in Python and string description在 Python 和字符串描述中具有 LIKE (sql) 等效项的查询
【发布时间】:2019-01-15 12:46:51
【问题描述】:

我想在 python 中使用 sql 中的 LIKE 进行查询。
所以我一直在使用这样的 __contains 选项:

results = objectName.objects.filter(variable__contains='someword')  

但现在我想对变量施加约束,例如:

filter(variable__contains='_A%')   

“_”是任何字符,“%”是它想要的所有字符——就像在 SQL 中一样——但它不起作用:(
有人知道该怎么做吗?

【问题讨论】:

  • 那是filter(variable__startswith='_A')
  • 尝试用r"_A%"这样的原始字符串定义它
  • 它不起作用,因为它正在寻找确切的字符下划线,或者我希望它被任何字符替换
  • @DusanGligoric:这无济于事,因为'_A%' == r'_A%'。原始流不是特殊的流,它是用来避免大量转义的。

标签: python sql django string


【解决方案1】:

Django 的查询似乎不支持开箱即用的 LIKE(这有点奇怪)。

您可以将LIKE 表达式转换为正则表达式并使用__regex

.filter(variable__regex='.A.*')  

(另一种更高级的方法是自己编写 LIKE 查找类并将其注册到 CharField。)

【讨论】:

    猜你喜欢
    • 2018-09-06
    • 2021-12-23
    • 1970-01-01
    • 2015-04-14
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    相关资源
    最近更新 更多