2012-02-01 42 views
10

Tôi có dữ liệu trong cơ sở dữ liệu của tôi như thế này:Android SQLiteDatabase truy vấn thứ tự sắp xếp

Alice 
anderson 
Beatrice 
benny 
Carmen 
calzone 

Sử dụng mã này:

mDb.query(DATABASE_NAMES_TABLE, new String[] { KEY_ROWID, 
      KEY_NAME }, null, null, 
      null, null, KEY_NAME+ " ASC"); 

hoặc mã này với bộ lọc là "":

mDb.query(true, DATABASE_NAMES_TABLE, new String[] { KEY_ROWID, 
     KEY_NAME }, KEY_NAME + " LIKE ?", 
     new String[] { filter+"%" }, null, null, null, 
     null); 

Nó sắp xếp các dữ liệu trên như sau:

Alice 
Beatrice 
Carmen 
anderson 
benny 
calzone 

Đây có phải là hành vi bình thường không? Làm thế nào để tôi có được nó để sắp xếp theo thứ tự trên, nơi tất cả các As và Bs và Cs được với nhau? Cảm ơn.

Trả lời

9

Bạn có thể chỉ định độ nhạy trường hợp bằng cách thêm COLLATE NOCASE, hoặc trong mệnh đề ORDER BY của bạn hoặc (tốt hơn) khi bạn tự tạo bảng trong khai báo cột cụ thể đó.

+0

Công trình này hoạt động! Cảm ơn! – Maurice

12

SQL sử dụng vị trí ASCII để sắp xếp, do đó bạn muốn sử dụng "đối chiếu" trong một số thời trang ...

Something trong bản chất của:

ORDER BY YourColumn Collate NOCASE 

hoặc

ORDER BY YourColumn Collate SQL_Latin1_General_CP850_BIN 
+0

Câu trả lời của bạn cũng đúng nhưng EboMike đã trả lời nó trước. :) Cảm ơn mặc dù bạn đã được phát hiện! – Maurice

+1

+1 từ tôi mặc dù! – EboMike

1

Cursor c = db.query (YOUR_TABLE_NAME, null, null, null, null, null, YOUR_COLOMN_NAME + "Soạn thảo NOCASE");

+0

Bạn có thể giải thích thêm một chút không? –

+0

trong trường hợp của tôi, tôi muốn hiển thị 'tên' từ bảng 'biểu mẫu' của tôi theo thứ tự, vì vậy tôi đã sử dụng ..--> Cursor c = db.query ("biểu mẫu", null, null, null, null, null, "name Collate NOCASE"); Và sau đó ---> while (c.moveToNext()) {String studentname = c.getString (0) .toString()} Lưu ý; - 'name' là colomn đầu tiên của tôi trong cơ sở dữ liệu. – user2786249

Các vấn đề liên quan