2012-07-27 5 views
6

में वैरिएबल मैं Xquery का उपयोग कर एक्सएमएल से विशेषता मान प्राप्त करना चाहता हूं।एसक्यूएल का उपयोग कर एक्सएमएल विशेषता से मूल्य कैसे प्राप्त करें: xquery

मेरी एक्सएमएल

<Answers> 
    <AnswerSet> 
    <Answer questionId="NodeID">155</Answer> 
    <Answer questionId="ParentNode" selectedValue="12">Product</Answer> 
    </AnswerSet> 
</Answers> 

नीचे मेरी क्वेरी है।

DECLARE @Field Varchar(100) 
DECLARE @Attribute VARCHAR(100) 
SET @Field='ParentNode' 
SET @Attribute = 'selectedValue' 

SELECT ISNULL(PropertyXML.value('(/Answers/AnswerSet/Answer[@questionId=sql:variable("@Field")])[1]','varchar(max)'),'') , 

IsNull (PropertyXML.value ('(/ उत्तर/AnswerSet/उत्तर [@ questionId = एसक्यूएल: चर ("@ फील्ड")]/एसक्यूएल: चर (@Attribute)) [1]', ' varchar (max) '),' ') नोड से कहां आईडी = 155

रेखा से नीचे

एसक्यूएल के साथ ठीक काम कर रहा है: चर

ISNULL(PropertyXML.value('(/Answers/AnswerSet/Answer[@questionId=sql:variable("@Field")])[1]','varchar(max)'),'') 

लेकिन मैं नीचे लाइन में त्रुटि हो रही है ..

ISNULL(PropertyXML.value('(/Answers/AnswerSet/Answer[@questionId=sql:variable("@Field")]/sql:variable(@Attribute))[1]','varchar(max)'),'') 

मैं परिणामस्वरूप प्रदान की गई विशेषता (@Attribute) मान प्राप्त करना चाहता हूं।

+0

एसक्यूएल सर्वर के किन संस्करणों की तरह कुछ का प्रयास करें? यदि आप .value का उपयोग कर रहे हैं, तो 2005+ –

+0

हाँ 2005 और 2008 – Mohmedsadiq

उत्तर

2

ISNULL(@Xml.value('(/Answers/AnswerSet/Answer[@questionId=sql:variable("@Field")]/@*[local-name() = sql:variable("@Attribute")])[1]','varchar(max)'),'') 
+0

आपकी सहायता के लिए धन्यवाद – Mohmedsadiq

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