mysql - 如何在数据库表列中搜索多个字符串?

标签 mysql sql ruby-on-rails ruby ruby-on-rails-3

我正在使用 Rails 3.2.2 和 MySQL。我正在按用户名(例如,JohnAnthonyMark)这样搜索数据库表列:

# User controller
User.search_by_name(params[:search]).order(:name)

# User model
def self.search_by_name(search)
  if search
    where('users.name LIKE ?', "%#{search}%")
  else
    scoped
  end
end

但是,由于名称可以由两个或多个字符串组成(例如,John HenryHenry JohnAnthony MariaMaria Anthony, Mark AlfredAlfred Mark), 我也想在 params[: search] 提供了多个名称。我试着用

def self.search_by_name(search)
  if search
    search.split(' ').each do |string|
      where('users.name LIKE ?', "%#{string}%")
    end
  else
    scoped
  end
end

但我收到以下错误(例如,假设我正在搜索 John Henry):

NoMethodError (undefined method `order' for ["John", "Henry"]:Array).

如何正确搜索多个名称?

最佳答案

我完全认为您应该执行以下操作之一,

Mysql全文搜索:

http://devzone.zend.com/26/using-mysql-full-text-searching/

狮身人面像搜索:

http://www.ibm.com/developerworks/library/os-php-sphinxsearch/

  • 我推荐 sphinxsearch,因为我将它与各种很酷的功能一起使用 用它内置。
  • 对 sphinx 的支持也很棒!

关于mysql - 如何在数据库表列中搜索多个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10680108/

相关文章:

python - 为什么这个 sqlite3 insert 语句不添加行?

php - 选择使用 join 和 group by 形成的表中具有最新日期的行

ruby-on-rails - 使用 Ruby 将整数转换为行数组

ruby-on-rails - Rails 使用简单语法重定向到帐户的子域

sql - 将每个 SQL 查询记录到 Rails 中的数据库

mysql - Yii2 按最大日期选择?

javascript - 在mysql nodejs中插入对象数组

mysql - 如何在 mysql 数据库中存储 rrweb-io 事件

mysql - 无法在 Windows 上安装 python mysqlclient

c# - LINQ 到 SQL : Delete entity (by ID) with one query