【问题标题】:sql query or django filter for string用于字符串的 sql 查询或 django 过滤器
【发布时间】:2022-10-13 14:45:09
【问题描述】:

你好,我需要一个在数据库中搜索并返回与起始字符最相似的行并带有一个值。 想象一下,给定的字符串是'abcdefghijklmnop' 我们的数据库表有一个名为 x 的列,对于该列,行是: 1-'一个' 2-'ABC' 3- 'absde' 4-'abcdef' 5-'abcdefg' 6-'1abcdefg'

它应该返回第 5 行

【问题讨论】:

    标签: sql django django-models


    【解决方案1】:

    在 postgres 中存在一个相似度函数,首先创建包含它的扩展

    create extension pg_trgm;
    

    之后使用这样的相似度百分比进行选择(例如 80% 或您想要的值)

    select x from "table" where similarity('abcdefghijklmnop', x)>0.35;
    

    或者最相似的字符串是

    select * from "table" order by similarity('abcdefghijklmnop', x) desc limit 1;
    

    小提琴http://sqlfiddle.com/#!17/c901e/2 和文档https://www.postgresql.org/docs/current/pgtrgm.html

    【讨论】:

    • 谢谢,但我需要最相似的,而不是百分比,存在的最相似
    • 添加查询以获得最相似的。
    【解决方案2】:

    我发现的最好的是: 选择身份证, 从表 WHERE '3552' LIKE 前缀 || '%' ORDER BY 前缀 DESC 限制 1

    谢谢你们

    【讨论】:

      猜你喜欢
      • 2014-06-02
      • 2015-04-01
      • 2011-06-04
      • 2021-04-13
      • 1970-01-01
      • 2011-05-16
      • 2011-04-21
      • 2013-06-11
      • 1970-01-01
      相关资源
      最近更新 更多