我有这个查询,我们可以在其中根据名字和姓氏
进行搜索。它像这样工作得很好:
|> where(
[user],
ilike(user.first_name, ^string) or (user.last_name, ^string)
)
它工作正常。现在我想搜索全名 first_name + last_name
。我尝试了 Postgres 的这种方法。如果我在此查询中同时传递名字和姓氏,它将返回空值。
|> where(
[user],
ilike(user.first_name, ^string) or ilike(user.last_name, ^string) or ilike(fragment("(?)||' '||(?)", user.first_name, user.last_name), ^string)
)
但它不起作用。它没有返回任何结果。 我有什么想念的吗? 谢谢
最佳答案
在这种情况下,[可以说]更常见的方法是使用 Ecto.Query.or_where/3
|> where([user], ilike(user.first_name, ^string))
|> or_where([user], ilike(user.last_name, ^string))
|> or_where([user], ilike(fragment("CONCAT((?), ' ',(?))",
user.first_name, user.last_name), ^string))
关于elixir - 合并两列并搜索它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59369487/