【发布时间】:2016-04-05 05:23:40
【问题描述】:
我也有类似here 的问题。但由于没有足够的学分所以无法在那里发表评论,所以产生了新的问题。
不管怎样,问题是:
我想比较 ruby 中的两个字符串,方法与 mysql 类似 将两个字符串与排序规则 utf_general_ci 进行比较。
详细来说,当在 db 中选择排序规则 utf_general_ci 时,在执行查询时,mysql 对待 'a' and 'ä' 是 same。由于我想要批量插入,因此我将所有名称(带有 utf_general_ci 排序规则的列)拉入 ruby 脚本,并在不存在名称的情况下进行插入语句。但是在ruby 的比较过程中,'a' and 'ä' 这样的字符会被处理为different。但我希望在 utf_general_ci 排序规则的情况下,以类似 mysql 的方式实现比较。
在旧问题中,有一个使用 'iconv' 的答案,在 1.9.3 之后已弃用。所以我认为应该使用String#encode 来做同样的事情。但找不到复制该行为的确切方法。
【问题讨论】:
-
为什么不简单地发出一个 MySQL 命令来进行比较?
-
@RickJames 是的,我可以发出 MySQL 命令首先搜索表中是否存在,如果不存在则插入。但这需要很多时间,因为我有大量数据。所以这就是为什么我试图形成一批插入语句然后上传到 MySQL 数据库。
-
INSERT ... ON DUPLICATE KEY UPDATE ...避免了在插入之前检查行是否存在的需要。 -
但是对于每个条目,我都想避免“插入”查询,因为它需要很多时间。
-
但是
SELECT必须花时间进行检查。通过结合检查和插入/更新,它实际上节省了时间。如果您可以显示您现在的查询,也许我可以更清楚(或可能是错误的)。
标签: mysql ruby-on-rails ruby database collation