【问题标题】:Phonegap Sqlite Order by Not Correct utf8 problemsPhonegap Sqlite Order by Not Correct utf8 问题
【发布时间】:2012-11-11 01:09:31
【问题描述】:

我正在尝试在 Phonegap 上使用 Sqlite 对数据进行 SQL 排序,但结果不正确! 应该是:abcçdeéě

我的代码:

db.transaction(function(tx){

        tx.executeSql('SELECT id,keyword FROM Glossary ORDER BY lower(keyword) COLLATE NOCASE',[] , function(tx, results){
            var lastAlpha = "*";
            for(i=0;i<results.rows.length;i++){
                var firstChr = results.rows.item(i).keyword.substring(0,1).toUpperCase();
                if(firstChr!=lastAlpha){
                    console.log(firstChr);
                    lastAlpha = firstChr;
                }
            }
        },errorCB2);
    });

结果:

2012-11-22 17:14:14.641[15032:c07] [LOG] A
2012-11-22 17:14:14.641[15032:c07] [LOG] B
2012-11-22 17:14:14.642[15032:c07] [LOG] C
2012-11-22 17:14:14.644[15032:c07] [LOG] D
2012-11-22 17:14:14.645[15032:c07] [LOG] E
2012-11-22 17:14:14.646[15032:c07] [LOG] F
2012-11-22 17:14:14.647[15032:c07] [LOG] G
2012-11-22 17:14:14.648[15032:c07] [LOG] H
2012-11-22 17:14:14.649[15032:c07] [LOG] I
2012-11-22 17:14:14.650[15032:c07] [LOG] J
2012-11-22 17:14:14.651[15032:c07] [LOG] K
2012-11-22 17:14:14.652[15032:c07] [LOG] L
2012-11-22 17:14:14.654[15032:c07] [LOG] M
2012-11-22 17:14:14.655[15032:c07] [LOG] N
2012-11-22 17:14:14.656[15032:c07] [LOG] O
2012-11-22 17:14:14.657[15032:c07] [LOG] P
2012-11-22 17:14:14.658[15032:c07] [LOG] Q
2012-11-22 17:14:14.659[15032:c07] [LOG] R
2012-11-22 17:14:14.660[15032:c07] [LOG] S
2012-11-22 17:14:14.661[15032:c07] [LOG] T
2012-11-22 17:14:14.662[15032:c07] [LOG] U
2012-11-22 17:14:14.664[15032:c07] [LOG] V
2012-11-22 17:14:14.665[15032:c07] [LOG] W
2012-11-22 17:14:14.666[15032:c07] [LOG] X
2012-11-22 17:14:14.668[15032:c07] [LOG] Y
2012-11-22 17:14:14.669[15032:c07] [LOG] Z
2012-11-22 17:14:14.671[15032:c07] [LOG] Ç
2012-11-22 17:14:14.672[15032:c07] [LOG] É
2012-11-22 17:14:14.673[15032:c07] [LOG] Ö
2012-11-22 17:14:14.674[15032:c07] [LOG] Ü
2012-11-22 17:14:14.674[15032:c07] [LOG] İ
2012-11-22 17:14:14.676[15032:c07] [LOG] Ş

我在 The Last 中看到过类似“拉丁字符”。 ! 你有什么想法吗?

【问题讨论】:

    标签: ios sqlite cordova


    【解决方案1】:

    http://www.sqlite.org/datatype3.html#collation

    NOCASE - 与二进制相同,除了 ASCII 的 26 个大写字符在执行比较之前被折叠成它们的小写等效字符。请注意,只有 ASCII 字符是大小写折叠的。由于所需表的大小,SQLite 不会尝试进行完整的 UTF 大小写折叠。

    我相信这是在说 SQLite 不会提供这种排序,因为它需要太多的处理时间才能实现。 SQLite 确实提供了一个接口来定义您自己的排序规则序列 (http://www.sqlite.org/c3ref/create_collat​​ion.html),但我认为这在 PhoneGap 中并不容易使用。

    如果您非常确定要进行这种排序,您可以稍微修改一下并执行多个查询,这些查询将基于“开始于”类型运算符进行查询,然后以所需的顺序将它们链接在一起。但我一想到真的尝试这样做就畏缩了。

    【讨论】:

      猜你喜欢
      • 2014-06-11
      • 1970-01-01
      • 1970-01-01
      • 2019-10-19
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 2015-06-28
      • 2013-02-04
      相关资源
      最近更新 更多