- XQuery के विरुद्ध xml डेटा प्रकार
- सामान्य XQuery उपयोग के मामले
- XQueries Involving Hierarchy
-
माइकल रिस ब्लॉग में कुछ भी
अपडेट करें
मेरी सिफारिश एक्सएमएल में विशिष्ट नोड्स खोजने की प्रक्रियात्मक फैशन के बजाय, संबंधों में एक्सएमएल को तोड़ना और परिणामी संबंध में खोजों और जुड़ना होगा। यहां एक साधारण एक्सएमएल क्वेरी है जो नोड्स और रुचि के गुणों को काटती है:
select x.value(N'../../../../@stepId', N'int') as StepID
, x.value(N'../../@id', N'int') as ComponentID
, x.value(N'@nom',N'nvarchar(100)') as Nom
, x.value(N'@valeur', N'nvarchar(100)') as Valeur
from @x.nodes(N'/xml/box/components/component/variables/variable') t(x)
हालांकि, अगर आपको एक XPath का उपयोग करना चाहिए जो वास्तव में ब्याज के मूल्य को पुनः प्राप्त करता है:
select x.value(N'@valeur', N'nvarchar(100)') as Valeur
from @x.nodes(N'/xml/box[@stepId=sql:variable("@stepID")]/
components/component[@id = sql:variable("@componentID")]/
variables/variable[@nom="Enabled"]') t(x)
यदि चरण आईडी और घटक आईडी कॉलम हैं, चर नहीं हैं, तो आपको एसक्यूएल के बजाय एसक्यूएल:कॉलम() का उपयोग करना चाहिए:XPath फ़िल्टर में चर। देखें XML डेटा के अंदर संबंधपरक डेटा को बांधना ।
और अंत में यदि आपको केवल अस्तित्व की जांच करने की आवश्यकता है तो आप exist( का उपयोग कर सकते हैं) ) एक्सएमएल विधि:
select @x.exist(
N'/xml/box[@stepId=sql:variable("@stepID")]/
components/component[@id = sql:variable("@componentID")]/
variables/variable[@nom="Enabled" and @valeur="Yes"]')