2011-02-09 16 views
5

क्या एसक्यूएल के साथ XQuery के साथ एक LIKE ऑपरेशन करने का कोई तरीका है?xQuery LIKE-ऑपरेटर?

मैं कुछ "startwith", "endwith" और "include" -expressions बनाने के लिए नहीं चाहता था।

मैं क्या हासिल करना चाहते का उदाहरण:

for $x in /user where $x/firstname LIKE '%xxx' return $x 
for $x in /user where $x/middlename LIKE 'xxx%' return $x 
for $x in /user where $x/lastname LIKE '%xxx%' return $x 

वहाँ किसी भी तरह से XQuery में इस लक्ष्य को हासिल करने के लिए है?

संपादित करें:

ऊपर सवाल का जवाब मिल गया। नई समस्या:

क्या इसके विपरीत तरीके से ऐसा करने का कोई तरीका होगा? मैं उन प्रश्नों को एसक्यूएल समकक्ष के समान ऑपरेटर के साथ चलाने के लिए नहीं चाहता हूं। क्या यह संभव है?

समस्या हल: यह एक FLWOR अभिव्यक्ति

EDIT2 में हो गया है। आप एफएन चला सकते हैं: नहीं (शुरू होता है ('123', '1')) और यह झूठा रिटर्न देता है।

+0

मैं बाधा से परेशान हूं "इसे एक फ्लोर अभिव्यक्ति में होना चाहिए"। सरल फॉर्मूलेशन '/ उपयोगकर्ता [मैचों (प्रथम नाम,'। * Xxx ')]' के साथ क्या गलत है? सरल पथ अभिव्यक्ति अक्सर FLWOR अभिव्यक्तियों की तुलना में अधिक संक्षिप्त होती है। –

+0

यह एक उपयोगी सवाल है, जिसे आपने स्वयं जवाब दिया था, लेकिन आउटपुट प्रदान नहीं किया। क्या आप यहां अपना उत्तर पोस्ट कर सकते हैं? क्या आप LIKE तुलनित्र स्ट्रिंग के सिंटैक्स का उपयोग करने में सक्षम थे या क्या आपको इसे xQuery विशिष्ट तुलना स्ट्रिंग में अनुवाद करना था? – Ben

उत्तर

13

XPath 2.0 और XQuery 1.0 (के रूप में W3C द्वारा मानकीकृत) matches समारोह http://www.w3.org/TR/xpath-functions/#func-matches साथ नियमित अभिव्यक्ति समर्थन:

/user[matches(firstname, 'xxx$')] 

और रास्ते में starts-with और contains (दोनों XPath में 1.0/2.0 की तरह कार्य हैं), और ends-with (केवल XPath 2.0 में) जो पर्याप्त हो सकता है।

+0

जो समस्या हल करता है। –

+0

@ मार्टिन होनेंन: +1 अच्छा जवाब। संपादित किया गया क्योंकि अंतिम वाक्य भ्रमित हो सकता है। –

+3

XPath 1.0 'end-with' XPath 2.0 फ़ंक्शन के बराबर है: 'substring ($ string, string-length ($ string) - स्ट्रिंग-लम्बाई ($ पैटर्न) + 1) = $ पैटर्न' –

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