使用ilike在Ecto中搜索部分字符串

时间:2016-07-21 17:32:05

标签: elixir phoenix-framework ecto

我正在尝试在数据库中搜索以查看字符串是否与数据库中另一个字符串的一部分匹配。如果两者使用ilike完全匹配,我可以匹配它,但是当我搜索字符串的一部分时,它不会捕获包含它的数据。以下是我的代码对查询的看法:

    servicesstate = Repo.all(from p in Callme.Service, where: ilike(p.locations, ^zip.state))

当值准确时("南卡罗来纳州","南卡罗来纳州")它会匹配,但我希望它匹配时("位于在南卡罗来纳州","南卡罗来纳州")

由于

1 个答案:

答案 0 :(得分:14)

您可以使用LIKE / ILIKE的%语法:

servicesstate = Repo.all(from p in Callme.Service, where: ilike(p.locations, ^"%#{zip.state}%"))

请注意,如果zip.state包含%,则无效。如果它可以包含%,则必须将Ecto.Query.API.fragment/1this这样的查询一起使用。