का उपयोग कर XML कॉलम पर SQL क्वेरी फ़िल्टर करें मेरे पास एक एक्सएमएल कॉलम वाला टेबल है। मैं उन पंक्तियों को फ़िल्टर करना चाहता हूं जहां एक्सएमएल में एक विशिष्ट विशेषता एक स्ट्रिंग से मेल खाती है, अनिवार्य रूप से जहां कहीं भी हो रही है या है।XPath/XQuery
तालिका इस
| id | xml |
की तरह कुछ और
<xml>
<info name="Foo">
<data .../>
</info>
<xml>
करने के लिए XML कुछ इसी तरह मैं सभी आईडी जहां @name विशेषता एक मूल्य के मिलान किया प्राप्त करना चाहते हैं लग रहा है।
मैं निम्न कार्य करने में सक्षम है:
SELECT id, xml.query('data(/xml/info/@name)') as Value
FROM Table1
WHERE CAST(xml.query('data(/xml/info/@name)') as varchar(1024)) = @match
लेकिन यह अविश्वसनीय रूप से धीमी है।
क्वेरी के आउटपुट पर फ़िल्टर करने का एक बेहतर तरीका होना चाहिए।
यदि आपने ऐसा नहीं किया है, तो मैं भी अपने XML स्तंभों पर अनुक्रमित सुनिश्चित करें कि आप मिल गया है करने का सुझाव देते चाहते हैं। > [एक्सएमएल इंडेक्स अवलोकन (SQLServerPedia.com)] (http://sqlserverpedia.com/wiki/XML_Indexes_Overview) – Kev