首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在JavaScript中匹配MySQL的utf8_general_ci排序顺序

在JavaScript中匹配MySQL的utf8_general_ci排序顺序
EN

Stack Overflow用户
提问于 2018-07-28 18:39:01
回答 1查看 321关注 0票数 0

我希望确保用JavaScript's sort method排序的数据的顺序与MySQL的ORDER BY子句匹配。我在MySQL中使用utf8_general_ci排序规则。

有什么想法吗?

更新:

比较在不使用Compare函数的情况下使用JavaScript的sort方法时的差异

MySQL:

JavaScript:

换句话说:我需要一个适当的比较函数,可以提供给sort方法,这样它就可以像utf8_general_ci排序表上的ORDER BY一样进行排序。

EN

回答 1

Stack Overflow用户

发布于 2018-08-18 06:23:19

MySQL中没有将acute-o放在A之前的排序规则,所以我认为这是不可能的。我认为Javascript是“错误的”。

为了进一步讨论,请提供粘贴的文本,而不是图像。此外,尝试提供有问题的字符的十六进制--来自Javascript和MySQL。

SELECT col, HEX(col), LENGTH(col), CHAR_LENGTH(col) FROM ...

并为有问题的表提供SHOW CREATE TABLE。可能是设置有问题,而不是排序规则有问题。

也许是

可能是Javascript盲目地比较“字节”,而不是“字符”。这就是-o(一个西欧字符)比波兰字符更敏锐的原因。另一个测试--在测试用例中添加几个非重音字符。你可能会发现,甚至在急性-o之前就出现了。

lz添加到测试用例将决定lz < ł是否适用于波兰语,而不是utf8_general_ci的工作方式。您应该考虑使用utf8_polish_ci。要演示斜杠-l,请执行以下操作:

console.log(letterSort('de', ['a','z','ä', 'ł', 'lz', 'l', 'z', 'ó']));
console.log(letterSort('pl', ['a','z','ä', 'ł', 'lz', 'l', 'z', 'ó']));
console.log(['a','z','ä', 'ł', 'lz', 'l', 'z', 'ó'].sort());

> Array ["a", "ä", "l", "ł", "lz", "ó", "z", "z"]
> Array ["a", "ä", "l", "lz", "ł", "ó", "z", "z"]
> Array ["a", "l", "lz", "z", "z", "ä", "ó", "ł"]

在最后一种情况下,请注意所有重音字符都在"z“之后。这可能等同于MySQL的COLLATION utf8_bin

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51570525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档