[英]Read value in XML Node - T-SQL
This is my code....... 这是我的代码.......
DECLARE @XML AS XML;
SET @XML = CAST('<Session id="ID969138672" realTimeID="4300815712">
<VarValues>
<varValue id="ID123" source="Internal" name="DisconnectedBy">VisitorClosedWindow</varValue>
<varValue id="ID1234" source="PreChat" name="email">1234@mail.ru</varValue>
</VarValues>
</Session>
' AS XML)
SELECT
xmlData.Col.value('@id','varchar(max)')
,xmlData.Col.value('@source','varchar(max)')
,xmlData.Col.value('@name','varchar(max)')
FROM @XML.nodes('//Session/VarValues/varValue') xmlData(Col);
This is the output..... 这是输出.....
How can I include the actual values of the varValue? 如何包含varValue的实际值?
I need to read the values VisistorClosedWindow and 1234@mail.ru values as well 我需要读取值VisistorClosedWindow和1234@mail.ru值
You can get that by doing this: 你可以这样做:
xmlData.Col.value('.','varchar(max)')
So the select would be: 所以选择将是:
SELECT
xmlData.Col.value('@id','varchar(max)')
,xmlData.Col.value('@source','varchar(max)')
,xmlData.Col.value('@name','varchar(max)')
,xmlData.Col.value('.','varchar(max)')
FROM @XML.nodes('//Session/VarValues/varValue') xmlData(Col);
Just use the .value('.', 'varchar(50)
) line for that: 只需使用
.value('.', 'varchar(50)
)行:
SELECT
xmlData.Col.value('@id','varchar(25)'),
xmlData.Col.value('@source','varchar(50)'),
xmlData.Col.value('@name','varchar(50)'),
xmlData.Col.value('.','varchar(50)') -- <== this gets your the element's value
FROM @XML.nodes('//Session/VarValues/varValue') xmlData(Col);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.