mysql - 使用 mysql 的 Rails LIKE 查询

标签 mysql ruby-on-rails activerecord encoding utf-8

我正在尝试执行 Like 查询匹配子字符串。我以前用过这个:

products = Product.where("title LIKE ? OR description LIKE ?", "%#{params[:s_term]}%", "%#{params[:s_term]}%")

它与 sqlite3 配合得很好(现在不用担心 sql 注入(inject))。 但是,我刚切换到 mysql,当我执行查询时,它提示 Encoding::UndefinedConversionError(“\xC2”从 ASCII-8BIT 到 UTF-8): 因为查询中的“%”。有没有办法让我在我的 where 查询中逃避这个或以不同的方式执行此操作?

最佳答案

在对“冒险”进行大量编码之后,问题出在我“导入”到我的数据库中的文件包含与 utf8 和 ascii 不兼容的字符串(问题特别出在这个字符:Â)。在我用来将字符串添加到我的数据库的函数中,我用它来防止这些字符进入我的数据库:

thestring.gsub(/\P{ASCII}/, '').encode('utf-8')

现在我可以确定我数据库中的所有内容都已正确编码,并且搜索不会返回 Rails 因编码原因无法处理的结果!

替代方案可能是:

thestring.delete!("^\u{0000}-\u{007F}").encode('utf-8')

此替代方法对我不起作用,但可能适用于某些 ruby​​/rails 版本。

关于mysql - 使用 mysql 的 Rails LIKE 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36727388/

相关文章:

MYSQL导入空值

ruby-on-rails - 如何在后台任务中生成 CSV 文件?

ruby-on-rails - PG::Result#clear 应该在你执行原始 SQL 之后被调用吗?

ruby-on-rails - 如何在给定值内按关联模型排序?

mysql - 是否可以使用在 ORDER BY 之后更新自身的变量计数器

php - 有没有一种方法可以在 MySQL 的一个查询中获取涉及连接到同一个表的 2 列的结果集?

ruby-on-rails - 载波文件删除

javascript - jQuery 从 Restful Web 服务解析 xml?

ruby-on-rails - 验证多个中至少一个的存在

php - 如何检查使用旧版API的MySQL查询是否成功?