sql查询for User.first_name或user.last_name或两者兼而有之



我正在编程一个导轨应用程序,该应用程序允许用户搜索其他用户。当前,用户可以首先搜索或姓氏,但不能同时搜索。

我正在使用:

@users = User.all.where("lower(first_name) LIKE :search OR lower(last_name) LIKE :search", search: "%#{parameter}%")

鉴于属性是独立的,我该如何处理带有空间的"哈利·波特"之类的搜索?我环顾四周忽略空间,然后尝试将第一个和最后一个分开,但它们似乎都很复杂。

您可以尝试将firstName和lastname与 ||

进行连接。
User.where(
  "(LOWER(firstname) || ' ' || LOWER(lastname)) LIKE :search",
  search: '%HARRY potter%'
)

您可以将name拆分为first_namelast_name然后

User.where(
  "lower(first_name) LIKE :first_name AND lower(last_name) LIKE :last_name", 
  first_name: "%#{first_name}%", last_name: "%#{last_name}%"
)

相关内容

最新更新