Android-Android各种不同平台下,用distinct查询数据库得到的结果的顺序不同

发布于 2017-03-01 07:02:48 字数 274 浏览 1440 评论 3

用模拟器测试的
数据库内容结构如下图所示

请输入图片描述

在平台2.2和3.1下查询的结果是:公司 民生 聚焦 要闻 评论 金融
在平台4.4下查询的结果是 要闻 公司 金融 聚焦 民生 评论
我想要实现的是4.4平台下的顺序结果,为什么会出现这种不同的差异?告诉一下

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

虐人心 2017-09-08 00:07:05

没有重现你的实现, 仅简单分析一下.

"在平台2.2和3.1下查询的结果是:公司 民生 聚焦 要闻 评论 金融"
-- 这个结果和ICU的排序是一样的, 看这里:
http://demo.icu-project.org/icu-bin/locexp?_=zh_Hans&d_=zh&x=col
在source栏输入:
"
要闻
公司
金融
聚焦
民生
评论
"
点sort, 排序为:
公司 民生 聚焦 要闻 评论 金融

在这里, 试一下不同的Collator:
http://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html

Localized Collation - ORDER BY

In addition to SQLite's default BINARY collator, Android supplies two more, LOCALIZED, which changes with the system's current locale, and UNICODE, which is the Unicode Collation Algorithm and not tailored to the current locale.

浮生未歇 2017-08-31 19:22:21

这可能和自然排序的结果不同,
计算机中的每一个字符都有一个内码。在默认情况下,计算机排序时,比较两个字符的大小就是比较字符内码的大小,这对于英文来说没有问题,因为英文字母的内码是按字母顺序递增的。对于中文来说,就比较麻烦了:首先,中文的排序方式有多种,比如按内码排序、按拼音排序和按笔画排序,要通过参数指定排序的方式,否则计算机就按内码排序了。其次,汉字的内码顺序即不同于拼音顺序,也不同于按笔画顺序。在GB2312编码中,汉字基本上按拼音排序(据说有例外,不太清楚)。在GBK中,它在GB2312基础上进行了扩充,兼容GB2312中的所有字符,所以不是按拼音排序了。在 Unicode中,汉字的排列似乎更没有什么规律可言了。
希望该答案可以给你启示,另外不建议直接查询 汉字 排序,可以采用另用一字段排序序列,或者拼音排序。

清晨说ぺ晚安 2017-05-28 23:46:40

跟android平台肯定没关系,有也是sqlite的不同,加上个自己的order就行了,就像楼上说的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文