mysql - 重写 SQL 查询以在 heroku 上工作

标签 mysql ruby-on-rails postgresql heroku

我如何重写这个 Rails 查询以在 Heroku (Portegres) 上运行

@students = Student.find(:all, 
                  :conditions =>["(concat(first_name, ' ', last_name) LIKE ?) OR
                                  (concat(first_name, ' ', middle_names, ' ', last_name) LIKE ?)",
                                 "%#{params[:search]}%", "%#{params[:search]}%"]
                        )

最佳答案

也遇到这个问题了。 Postgres 对 LIKE 运算符区分大小写,因此这是我在项目中所做的。另外,我不喜欢在本地运行 postgres,所以我让它在开发中使用 LIKE (mysql/sqlite) 运行,在生产中使用 ILIKE (postgres) 运行。 ILIKE 是“不区分大小写的”

/config/environment.rb

  DATABASE_OPERATOR = {
    :like_operator => "LIKE"
  }

/config/environments/生产.rb

  DATABASE_OPERATOR = {
    :like_operator => 'ILIKE' #postgres awfulness
  }

查询

@students = Student.find(:all, :conditions => ['(concat(first_name, " ", last_name) #{DATABASE_OPERATOR[:like_operator]} ?) OR (concat(first_name, " ", middle_names, " ", last_name) #{DATABASE_OPERATOR[:like_operator]} ?)', "%#{params[:search]}%", "%#{params[:search]}%"])

关于mysql - 重写 SQL 查询以在 heroku 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3132816/

相关文章:

postgresql - Azure Postgres 灵活服务器 Vnet

由于 mysqld.exe 错误,MySQL 无法在 XAMPP 中启动

ruby-on-rails - Rails postgresql 数据库连接失败

ruby-on-rails - 使用 Bullet 和 RSpec gem 减少 n+1 查询

sql - PostgreSQL - 避免两次列出相同的 IN() 值

sql - 具有 session 变量的 postgresql 行级安全性

java - 特殊unicode字符导致MySQL JDBC异常

php - array_fill 单词结果

java - 在 Hibernate 中正确处理长数据

javascript - Foundation 5 JS 在 Rails 应用程序中不起作用