2011-05-11 7 views
60

मैं बस इतना करना चाहता हूं कि सामान को वर्णानुक्रम में ले जाएं और पूंजी अक्षरों को अनदेखा करें।गैर-संवेदनशील संवेदनशील वर्णमाला क्रम में SQLite क्वेरी

db.rawQuery("SELECT " + catName + " FROM "+tableName+" ORDER BY "+catName+" ASC COLLATE NOCASE;", null); 

इस कोड को मैं ऊपर का उपयोग कर रहा है, लेकिन यह हमेशा मुझे एक SQLite अपवाद कह रही है कि मुक़ाबला एक सिंटैक्स त्रुटि है देता है।

android.database.sqlite.SQLiteException: near "COLLATE": syntax error: , while compiling: SELECT Artist FROM testTable COLLATE NOCASE ASC

उत्तर

157

COLLATE आदेश दिशा से पहले चला जाता है:

db.rawQuery("SELECT " + catName 
      + " FROM " +tableName 
     +" ORDER BY "+catName+" COLLATE NOCASE ASC;", null); 

लेकिन आप ASC जरूरत नहीं है - कि डिफ़ॉल्ट है ताकि आप बस के रूप में अच्छी तरह से इस्तेमाल कर सकते हैं:

db.rawQuery("SELECT "+ catName 
      +" FROM "+ tableName 
     +" ORDER BY "+ catName +" COLLATE NOCASE;", null); 
+1

सूओ वेयर! मैंने सोचा कि मैंने बाद के कोड की कोशिश की और मुझे एक ही त्रुटि मिली ... लेकिन अब यह काम करता है ... शायद मैंने इसे गलत टाइप किया था (सबसे अधिक संभावना है ... आपको बहुत धन्यवाद! –

+1

एक और सवाल कृपया ... क्या कोई है SQLite में डुप्लिकेट को अनदेखा करने का तरीका? –

+1

@ एंथनी होनसीनो: डुप्लिकेट को अनदेखा करने के बारे में एक नया प्रश्न पोस्ट करें - बहुत हां, लेकिन मुझे डुप्लिकेशन के बारे में विवरण देखना होगा। –

1

यह मुझे भी काम करना चाहिए मुझे लगता है:

db.rawQuery("SELECT "+ catName 
     +" FROM "+ tableName 
    +" ORDER BY lower("+ catName +");", null); 
7

ऑर्डर के बाद COLLEATE NOCASE जोड़ें।

db.query (तालिका, कॉलम, चयन, चयनआर्ग, समूह, होने, ऑर्डरबी + "कॉललेट नोकास एएससी");

यहां, एएससी या डीईएससी द्वारा आदेश आपकी आवश्यकता पर निर्भर करता है।