पर स्थानीयकृत COLLATE मैं लहजे और मामले की देखभाल किए बिना SQLite डीबी में दो तारों की तुलना करना चाहता हूं। मेरा मतलब है "एवेनमेंट" "उत्थान" के बराबर होना चाहिए।एक SQLite स्ट्रिंग तुलना
डेबियन व्हीज़ी पर, SQLite पैकेज आईसीयू प्रदान नहीं करता है। इसलिए मैंने आधिकारिक SQLite पैकेज (संस्करण 3.7.15.2 2013-01-09 11:53:05) संकलित किया जिसमें आईसीयू मॉड्यूल शामिल है। अब, मेरे पास एक बेहतर यूनिकोड समर्थन है (मूल lower()
केवल ASCII वर्णों पर लागू होता है, अब यह अन्य अक्षरों पर काम करता है)। लेकिन मैं तुलना में एक संयोजन लागू करने के लिए प्रबंधन नहीं कर सकता।
SELECT icu_load_collation('fr_FR', 'FRENCH');
SELECT 'événement' COLLATE FRENCH = 'evenement';
-- 0 (should be 1)
SELECT 'Événement' COLLATE FRENCH = 'événement';
-- 0 (should be 1 if collation was case-insensitive)
SELECT lower('Événement') = 'événement';
-- 1 (at least lower() works as expected with Unicode strings)
SQLite documentation पुष्टि करता है कि यह एक संयोजन लागू करने का सही तरीका है। मुझे लगता है कि documentation of this ICU extension थोड़ा हल्का है (कुछ उदाहरण, कॉलेशन के लिए संवेदनशीलता पर कुछ भी नहीं)।
मुझे समझ में नहीं आता कि COLLATE
ऑपरेटर का मेरे उदाहरण में कोई प्रभाव क्यों नहीं है। कृपया मदद करे।