Elixir 合并两列并搜索它们
我有一个查询,我们可以根据Elixir 合并两列并搜索它们,elixir,ecto,Elixir,Ecto,我有一个查询,我们可以根据名字和姓氏进行搜索。它的工作原理如下: |> where( [user], ilike(user.first_name, ^string) or (user.last_name, ^string) ) 它很好用。现在我想搜索全名,即名+姓。我尝试过博士后的这种方法。如果我在这个查询中同时传递名字和姓氏,它将返回空 |> where( [user], ilike(user.first_name, ^string) or ilik
名字和姓氏进行搜索。它的工作原理如下:
|> where(
[user],
ilike(user.first_name, ^string) or (user.last_name, ^string)
)
它很好用。现在我想搜索全名,即名+姓
。我尝试过博士后的这种方法。如果我在这个查询中同时传递名字和姓氏,它将返回空
|> where(
[user],
ilike(user.first_name, ^string) or ilike(user.last_name, ^string) or ilike(fragment("(?)||' '||(?)", user.first_name, user.last_name), ^string)
)
但它不起作用。没有结果。
我有什么遗漏吗?
谢谢看来
ilike(fragment(“CONCAT((?), ’ ',(?))”, user.first_name, user.last_name), ^string)
在这种情况下,[可以说]更常见的方法是使用
|>其中([user],ilike(user.first_name,^string))
|>或_其中([user],ilike(user.last_name,^string))
|>或_其中([用户]),ilike(片段)(“CONCAT((?),”,(?)”,
user.first(用户名,user.last(用户名),^string))
语法似乎是正确的。我认为问题在于SQL级别。使用原始SQL确保查询正常工作。您可以使用PG模式匹配操作符来确保这些东西按预期工作。