2009-07-04 14 views
7

स्वाभाविक रूप से SQLite सॉर्ट कर सकते हैं? उदाहरण के लिए,स्वाभाविक रूप से SQLite सॉर्ट कर सकते हैं?

CREATE TABLE animals (
    id INTEGER NOT NULL PRIMARY KEY, 
    name TEXT NOT NULL 
); 

INSERT INTO animals (name) VALUES ('Monkey'); 
INSERT INTO animals (name) VALUES ('manatee'); 

SELECT name FROM animals ORDER BY name; 

name  
---------- 
Monkey  
manatee 

मैं परिणामों को स्वाभाविक रूप से क्रमबद्ध करने के लिए पसंद करूंगा (यानी, मानेटे, बंदर)। SQLite के पास इस तरह सॉर्ट करने का विकल्प नहीं है? मैं बहुत सारे डेटा को सॉर्ट करता हूं, और यदि SQLite स्वाभाविक रूप से सॉर्ट नहीं कर सकता है, तो मुझे लगता है कि समाधान PostgreSQL या MySQL पर वापस जाना है।

उत्तर

7

ORDER BY UPPER(name) जो आप खोज रहे हैं उसे पूरा करेंगे।

इसके अतिरिक्त, आप SQLite default collation का उपयोग कर रहे हैं, जिसका अर्थ है कि तुलना सी 0 के memcmp फ़ंक्शन का उपयोग करके की जाती है, जो बाइट्स की तुलना करता है। इस मामले में, एम और एम बहुत अलग हैं। आप कॉलम को NOCASE संयोजन के लिए बदल सकते हैं। हालांकि, दस्तावेज़ों को देखते हुए, ऐसा प्रतीत होता है कि आपको एक नई तालिका बनाना होगा, इसमें अपना डेटा कॉपी करना होगा, पुरानी तालिका छोड़ दें और नया नाम बदलें, क्योंकि ALTER TABLE कमांड केवल तालिका का नाम बदलता है या कॉलम जोड़ता है।

SELECT name FROM animals ORDER BY name COLLATE NOCASE; 

आप अधिक विशिष्ट छंटाई की जरूरत है, आप अपने खुद के मिलान कार्यों कार्यों का sqlite3_create_collation* परिवार के साथ रजिस्टर कर सकते हैं और फिर COLLATE myCollationFunctionName का उपयोग करें:

+0

बिल्कुल प्राकृतिक नहीं है (यह अभी भी 1, 10, 11, 12, 2, 3, आदि का प्रकार है), लेकिन यह उस तालिका के लिए काम करता है जिसके साथ मैं काम कर रहा हूं। धन्यवाद! –

+2

मेरी इच्छा है कि SQLite पूरी तरह से ALTER वाक्यविन्यास का समर्थन करेगी, यह बहुत परेशान है – colithium

+0

@ मार्क: कुछ लोग प्राकृतिक ऑर्डरिंग (उदा।-मूवी टाइटल) पर विचार करते हैं। यदि आप SQLite में संख्यात्मक रूप से क्रमबद्ध करने के बारे में विचार प्राप्त करना चाहते हैं, तो कृपया एक अलग प्रश्न पोस्ट करें, क्योंकि इसके चारों ओर के पैरामीटर थोड़ा अलग हैं, और यह उन लोगों को आकर्षित करेगा जो SQL से अधिक परिचित हैं I – Eric

11

आप alter को बदलने के मिलान करने के लिए टेबल नहीं है।

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