Eti*_*nne 5 xml t-sql sql-server nodes
这是我的代码.......
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);
Run Code Online (Sandbox Code Playgroud)
这是输出.....

如何包含varValue的实际值?
我需要读取值VisistorClosedWindow和1234@mail.ru值
Avi*_*tus 18
你可以这样做:
xmlData.Col.value('.','varchar(max)')
Run Code Online (Sandbox Code Playgroud)
所以选择将是:
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);
Run Code Online (Sandbox Code Playgroud)