2012-11-22 3 views
2

Phonegap에서 Sqlite로 SQL Ordering Data를 시도하고 있지만 결과가 정확하지 않습니다! 그것은 다음과 같습니다Phonegap Sqlite Not correct에 의한 Sqlite 문제

내 코드 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] Ş 

. ! 당신은 어떤 아이디어가 있습니까?

답변

1

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

NOCASE - 비교가 수행되기 전에 그들의 하부 케이스 당량 이진 동일 ASCII의 26 대문자 제외 접혀있다. ASCII 문자 만 대/소문자를 접을 수 있습니다. SQLite는 필요한 테이블의 크기 때문에 UTF 케이스를 완전히 폴딩하지 않습니다.

나는 SQLite가 그 종류의 정렬을 제공하지 않는다고 말하는 것은 그것을 달성하는 데 너무 많은 처리 시간이 걸리기 때문입니다. SQLite는 자신의 데이터 정렬 순서를 정의하는 인터페이스를 제공하지만 (http://www.sqlite.org/c3ref/create_collation.html) PhoneGap에서 쉽게 사용할 수 있다고 생각하지 않습니다.

이 정렬을하기로 결정했다면 해킹하고 '시작'유형 연산자를 기반으로 쿼리 한 다음 원하는 순서로 모두 연결하는 여러 쿼리를 수행 할 수 있습니다. 하지만 실제로 그렇게하려고하는 생각이 들리는군요.