क्या nodes()
xml
डेटा प्रकार दस्तावेज़ दस्तावेज़ में डेटा प्रकार रिटर्न नोड्स की विधि है?क्या 'नोड्स()' विधि दस्तावेज़ ऑर्डर रखती है?
, अगर वहाँ की तरह डेटा कर रहे हैं:
declare @xml xml
set @xml = '<Fruits><Apple /><Banana /><Orange /><Pear /></Fruits>'
जो
select T.c.query('.')
from @xml.nodes('/Fruits/*') T(c)
के रूप में क्वेरी की जाती है तत्वों दस्तावेज़ क्रम में लौटा दी जाएगी? select
द्वारा लौटाई गई पंक्तियों का आदेश अपरिभाषित माना जाता है यदि order by
खंड छोड़ा गया है। क्या यह select ... from ... .nodes()
के मामले में है, या यह असाधारण है?
declare @xml xml
set @xml = '<Data><Element OrderNo="1" /><Element OrderNo="2" />'
+ '<Element OrderNo="3" /><Element OrderNo="4" />'
+ '<Element OrderNo="5" /></Data>'
select * from (
select T.c.value('.', 'int') OrderNo1,
row_number() over (order by @@spid) OrderNo2
from @xml.nodes('/Data/Element/@OrderNo') T(c)) sq
where OrderNo1 != OrderNo2
जबकि मैंने इस पोस्ट को ऊपर उठाया (क्योंकि इसमें विषय पर मैंने जो जानकारी देखी है उसका सबसे अच्छा संग्रह है), यह माइक्रोसॉफ्ट के एसक्यूएल कार्यान्वयन में एक निश्चित छेद है। ओरेकल, डीबी 2 और पोस्टग्रेएसक्यूएल (कम से कम) में XMLTables में ऑर्डिनेलिटी कॉलम हैं। मुझे टी-एसक्यूएल (गैर-एएनएसआई) एक्सएमएल एक्सटेंशन का उपयोग करके कुछ चीजें आसान मिलती हैं; एएनएसआई-शैली एसक्यूएल/एक्सएमएल के साथ अन्य चीजें आसान हैं। ज्यादातर यह एक धो है।लेकिन यह एक स्पष्ट विकल्प है जिसमें कोई साफ विकल्प नहीं है (उन्होंने कहा, एमएस सुन रहा था)। – unbob