प्रश्न:
declare @X xml = '
<item ID = "0"/>
<item ID = "1"/>
<item/>
<item/>';
select I.X.value('@ID', 'int')
from @X.nodes('/item') as I(X);
परिणाम:
-----------
0
1
NULL
NULL
निष्पादन योजना:
शीर्ष शाखा XML को चार पंक्तियों में विभाजित करती है और नीचे की शाखा विशेषता के लिए मूल्य प्राप्त करती है ID
।
मुझे जितना अजीब लगता है, वह स्ट्रीम एग्रीगेट ऑपरेटर से लौटी पंक्तियों की संख्या है। फ़िल्टर से आने वाली 2 पंक्तियाँ XML में ID
पहले और दूसरे item
नोड से विशेषता है । स्ट्रीम एग्रीगेट चार पंक्तियों को लौटाता है, प्रत्येक इनपुट पंक्ति के लिए, प्रभावी रूप से इनर जॉइन को एक बाहरी जॉइन में बदल देता है।
क्या यह कुछ ऐसा है जो स्ट्रीम एग्रीगेट अन्य परिस्थितियों में भी करता है या क्या यह एक्सएमएल प्रश्नों को करते समय कुछ अजीब है?
मैं क्वेरी प्लान के XML संस्करण में कोई संकेत नहीं देख सकता हूं कि यह स्ट्रीम एग्रीगेट किसी भी अन्य स्ट्रीम एग्रीगेट की तुलना में किसी भी अलग तरह से व्यवहार करना चाहिए जो मैंने पहले देखा है।