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

use*_*169 10 elixir ecto phoenix-framework

我试图在数据库中搜索一个字符串是否匹配数据库中另一个字符串的一部分.我可以让它匹配,如果两个确切使用ilike,但当我只搜索字符串的一部分时,它不会捕获包含它的数据.以下是我的代码查询的代码:

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

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

谢谢

Dog*_*ert 18

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

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

请注意,如果zip.state包含a ,则无法正常工作%.如果它可以包含%,你将不得不使用Ecto.Query.API.fragment/1与像查询.

  • 表达赞赏的最佳想法是投票,并检查这个答案作为您的问题的解决方案. (3认同)
  • 没关系,这是@ Dogbert的回答:http://stackoverflow.com/a/41021806/281199 (3认同)
  • @NathanLong不。刚刚回答了有关此刻的最新问题:) (2认同)