2012-02-01 16 views
10

मैं इस तरह मेरे डेटाबेस में डेटा है:एंड्रॉयड SQLiteDatabase क्वेरी आदेश छँटाई

Alice 
anderson 
Beatrice 
benny 
Carmen 
calzone 

इस कोड का उपयोग करना:

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

या फिल्टर किया जा रहा है "" के साथ इस कोड:

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

यह इस प्रकार के उपरोक्त डेटा को टाइप करता है:

Alice 
Beatrice 
Carmen 
anderson 
benny 
calzone 

क्या यह सामान्य व्यवहार है? मैं उपरोक्त आदेश को क्रमबद्ध करने के लिए कैसे प्राप्त करूं जहां सभी एएस और बीएस और सी एक साथ हैं? धन्यवाद।

उत्तर

9

, या तो ORDER BY खंड में, या (अधिमानतः) जब आप उस विशेष कॉलम की घोषणा में तालिका बनाते हैं तो आप केस संवेदनशीलता निर्दिष्ट कर सकते हैं।

ORDER BY YourColumn Collate NOCASE 

या

ORDER BY YourColumn Collate SQL_Latin1_General_CP850_BIN 
+0

यह काम करता है! धन्यवाद! – Maurice

12

एसक्यूएल की प्रकृति में इतना सॉर्ट करने के लिए ASCII स्थान का उपयोग करता है आप कुछ फैशन में "मुक़ाबला" का उपयोग करेंगे ...

कुछ c = db.query (YOUR_TABLE_NAME, null, null, null, null, null, YOUR_COLOMN_NAME + "NOCASE को Collate");

+0

आपका उत्तर भी सही है लेकिन EboMike इसे पहले मिला। :) धन्यवाद हालांकि आप पर स्पॉट थे! हालांकि – Maurice

+1

मेरे से +1! – EboMike

1

कर्सर:

+0

क्या आप थोड़ा और समझा सकते हैं? –

+0

मेरे मामले में, मैं अपने 'फॉर्म' तालिका से 'नाम' प्रदर्शित करना चाहता हूं, इसलिए मैंने ..--> कर्सर सी = डीबी.क्वायरी ("फॉर्म", नल, नल, नल, नल, नल, "नाम कोलेट NOCASE"); और फिर ---> जबकि (c.moveToNext()) {स्ट्रिंग छात्र नाम = c.getString (0) .toString()} नोट; - 'नाम' डेटाबेस में मेरा पहला कोलोन है। – user2786249

संबंधित मुद्दे