gpt4 book ai didi

phoenix-framework - Ecto where like 查询就像 where ==

转载 作者:行者123 更新时间:2023-12-04 11:04:24 25 4
gpt4 key购买 nike

我试图让一个像 ecto 这样的查询工作:

def find(searchterm) do
query = from c in Contact,
#where: fragment("? % ?", c.company_name, ^searchterm),
where: like(c.company_name, ^searchterm),
contacts = Repo.all(query)
{:ok, contacts}
end

在我的表中,我有一个 company_name “Asymptote”。使用 where: like/2 我的查询如下所示:
SELECT c0."id", c0."company_id", c0."company_name" FROM "contacts" AS c0 WHERE (c0."company_name" LIKE $1) ["Asym"] (1.0ms)

当 pg_trm 搜索取消注释时,它看起来像这样:
SELECT c0."id", c0."company_id", c0."company_name" FROM "contacts" AS c0 WHERE (c0."company_name" % $1) ["Asym"] (1.0ms)

据我所知,查询看起来不错,但没有结果。由于我在将“Asymptote”添加到数据库后添加了索引,我希望这就是为什么在 pg_trm 索引中找不到它的原因,但是为什么 like/2 或 ilike/2 不起作用?当输入全名“Asymptote”时,我能够找到记录。

最佳答案

我遇到了一些类似的问题。不幸的是,我没有可用的 pg_trgm。我使用 LIKE 如下:

  from candidate in query,
where: like(candidate.first_name, ^("%#{text}%"))

这匹配了Candidate.first_name 任何地方的文本。

关于phoenix-framework - Ecto where like 查询就像 where ==,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30228500/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com