2015-05-28 9 views
8

क्या DocumnetDb पर केस असंवेदनशील खोज करना संभव है?Azure DocumentDb पर केस असंवेदनशील खोज कैसे करें?

चलो कहते हैं कि मैं के रूप में "Timbaktu" 'नाम' कुंजी और मान के साथ एक रिकॉर्ड

यह काम करेंगे करते हैं:

select * from json j where j.name = "Timbaktu" 

यह अभ्यस्त:

select * from json j where j.name = "timbaktu" 

तो कैसे करना यो एक मामला असंवेदनशील खोज करते हैं?

अग्रिम धन्यवाद।

सम्मान।

उत्तर

10

ऐसा करने के दो तरीके हैं। 1. अंतर्निहित लोअर/अप्पर फ़ंक्शन का उपयोग करें, उदाहरण के लिए,

select * from json j where LOWER(j.name) = 'timbaktu' 

हालांकि इसे स्कैन की आवश्यकता होगी। एक और अधिक कुशल तरीका एक "canonicalized" फार्म को स्टोर करना है उदा। लोअरकेस और क्वेरीिंग के लिए इसका इस्तेमाल करें। उदाहरण के लिए, JSON होगा

{ name: "Timbaktu", nameLowerCase: "timbaktu" } 

तब की तरह क्वेरी करने के लिए इसका इस्तेमाल करते हैं:

select * from json j WHERE j.nameLowerCase = "timbaktu" 

आशा इस मदद करता है।

+0

अरविंद, लोअर काम नहीं करता है। जब क्वेरी प्रदान की गई स्ट्रिंग को लोअर में परिवर्तित किया जाता है और डीबी में वास्तविक स्ट्रिंग नहीं होती है तो क्वेरी एक खाली परिणाम लौटाएगी। – Codehelp

+1

कोडहेल्प, मेरी क्वेरी पर, मैं डीबी में स्ट्रिंग पर लोअर को कॉल कर रहा हूं, है ना? मुझे लगता है कि पारित स्ट्रिंग कम है, लेकिन आप इसके बजाय, लोअर (j.name) = लोअर ('टिंबकतु') –

+0

अरविंद जैसे कुछ कर सकते हैं, यह स्ट्रिंग में पारित होने पर काम करता है, चाहे वह कम हो या कोई अन्य मैचों डीबी में क्या है मेरा सवाल है कि हमारे पास एसक्यूएल में 'COLLATE' जैसा कुछ है? – Codehelp

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