我从tsql存储过程中的各种表中提取数据,其中一个字段是XML列。此XML的每个子节点都有2个子节点:问题和答案。
xml结构如下所示:
<QuestionXML>
<QuestionCollection xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Questions>
<QuestionModel>
<Question>Color</Question>
<Answer>Blue</Answer>
</QuestionModel>
<QuestionModel>
<Question>Tall</Question>
<Answer>False</Answer>
</QuestionModel>
</Questions>
</QuestionCollection>
</QuestionXML>
我需要找到名称与我传入的字符串匹配的问题节点,并且我想检索其Answer sibling的值。
第1部分:我想使用所需的XML语法,它相当于: (从问题中选择答案问题=&#39;颜色&#39;)AS&#39;颜色&#39;
第2部分:我想从XML列中选择我的XML值,这是嵌套SELECT语句的结果。
( 选择答案
FROM(SELECT F.QuestionXML FROM XMLTable F WHERE F.PIN = @PIN)
问题=&#39;颜色&#39; )AS&#39; COLOR&#39;
我无法正确使用XML语法。
如果有人能够为我提供正确的XML语法,我想我可以让我自己完成第2部分。
由于
答案 0 :(得分:0)
第1部分,假设您的xml位于名为@x:
的xml变量中SELECT @x.query('//Answer/..[Question="Color"]/Answer')
来自表格:
SELECT xmlcolumn.query('//Answer/..[Question="Color"]/Answer/text()') from tablewithXMLcolumn